Selenium Webdriver Hakkında Bilmediğiniz Her Şey
Yayınlanan: 2022-11-02Otomasyon testçileri, komutları kabul edip bir web tarayıcısına göndererek bir sistemdeki oranları test etmek için Selenium Webdriver'ı kullanır.
Modern dünyada yüzlerce mobil ve web uygulaması kullanılıyor. QA ekibi, web uygulamalarının geliştirme bölgesinin dışında işlevsel olmasını her zaman sağlamalıdır. Daha önce, bu görevler manuel olarak yürütülüyordu.
Selenyum'a girin. Testin yapılma şeklini değiştirdi.
Artık otomasyon, zamandan ve maliyetten tasarruf sağladığı ve işletmelere birçok avantaj sağladığı için her sektörde yaygın olarak ün kazanmıştır.
Selenium, web uygulaması geliştirme dünyasındaki çeşitli kuruluşlar için yararlı olan en iyi otomatikleştirilmiş test araçlarından biridir. Gerçekten de birçok iyi şey sunan kullanışlı ve güçlü bir araçtır.
Web uygulamalarının ön ucunu test etmek için çok fazla zaman harcamadan uygulama özelliklerinden emin olmak isteyen geliştiriciler, Selenium'u amaçları için kullanabilirler. Ayrıca Selenium, tekrarlayan görevlerinizi otomatikleştirerek zamandan tasarruf etmenizi sağlar.
Bu yazıda Selenium, Selenium Webdriver, bileşenleri, desteklenen diller, bazı temel özellikler ve gerçek dünyadaki kullanım örneklerini tartışacağım.
Hadi başlayalım!
Selenyum Nedir?
Selenium, web uygulamaları için bir otomasyon aracıdır. Çeşitli kuruluşların ve geliştiricilerin kritik görevlerini otomatikleştirmek için kullandıkları açık kaynaklı, taşınabilir bir çerçevedir. Regresyon ve fonksiyonel test senaryolarının test edilmesi söz konusu olduğunda, Selenium oldukça esnektir.

Selenium, çeşitli platformlarda, programlama dillerinde ve tarayıcılarda otomasyonu destekler. Test komut dosyaları Python, C#, Java ve daha fazlası gibi çeşitli programlama dillerinde yazılmıştır. Bu komut dosyaları Safari, Firefox, Chrome, Opera vb. gibi farklı tarayıcılarda çalışır ve macOS, Linux, Windows, Solaris vb. platformları destekler.
Selenium, çapraz tarama işlevselliğini destekler ve tarayıcı tabanlı ve sağlam regresyon otomasyon takımlarının oluşturulmasına yardımcı olur.
İlk olarak 2004 yılında Jason Huggins tarafından geliştirildi, düzenli test gerektiren bir web uygulamasında mühendis olarak çalışıyordu. Böylece JavaScript aracılığıyla bir program oluşturdu ve manuel testin eksikliklerini fark etti.
İlk başta, programa 'JavaScriptTestRunner' adını verdi. Programın potansiyelini fark ettikten sonra, Jason Huggins onu Selenium Core olarak yeniden adlandırdığı açık kaynaklı bir platform haline getirdi.
Selenyum Nasıl Faydalıdır?
Selenium, geliştiricilere otomatik test yapma yetkisi verdiğinden, geliştiriciler ve kuruluşlar, web uygulamalarını test etme konusunda Selenium'u kullanır.

Aslında, bir yazılım parçası karmaşık bir mimariyle gelir ve aynı zamanda gerilemeye eğilimlidir. Yeni özellikler eklemekten kusurları düzeltmeye kadar bununla ilgili her işlev, mevcut özelliklerin çalışmamasına neden olabilir. Otomatik testin programlama dünyasındaki en faydalı adım olmasının ana nedeni budur.
Özelliklerde yapılan her küçük değişiklikten sonra uygulamayı manuel olarak test etmek pratik olmadığından, Selenium bu tür yoğun görevleri azaltmak için size daha iyi bir çözüm sunar. Kuruluşların ve geliştiricilerin, çeşitli tarayıcılarda web uygulamalarıyla her etkileşimin testini simüle etmesine olanak tanır.
Selenyum Araç Takımı

Selenyum, geniş bir araç veya bileşen paketi içerir. Her birini tartışalım.
#1. selenyum IDE
Selenium IDE adlı bir kayıt ve oynatma otomasyon bileşeni kullanarak web uygulamalarınızın testlerini otomatikleştirebilirsiniz. Bir Firefox ve Chrome tarayıcı uzantısı şeklinde gelir. Kayıt ve oynatma prensipleri üzerinde çalıştığı için bu aracı düşük ve sınırlı programlama deneyimine sahip kişiler kullanabilir.
#2. selenyum RC

Selenium RC, otomasyon için herhangi bir tarayıcıya JavaScript kodu eklemek için kullanılır. Ayrıca, bu otomasyon komut dosyalarını çalıştırmak için ek bir sunucu gerektirir. Ancak yavaş olması, HtmlUnitDriver gibi başsız bir tarayıcıya sahip olmaması ve herhangi bir test komut dosyasını çalıştırmadan önce sunucuyu başlatması gibi bazı sınırlamaları vardır.
#3. Selenyum Web Sürücüsü
Selenium Webdriver, Selenium'un en önemli bileşenlerinden biridir. Birden çok tarayıcı için çeşitli sürücüler sunar ve farklı programlama dillerini destekler.
Ek olarak, nesne yönelimlidir ve Firefox, Chrome, IE, Safari ve daha fazlası gibi neredeyse tüm tarayıcıları destekler. Komut dosyası oluşturma, Python, Ruby, Java ve daha fazlası dahil olmak üzere popüler diller kullanılarak yapılabilir.
#4. selenyum ızgara
Selenyum ızgarası yine Selenyum'un önemli bir parçasıdır. Otomatik testlerin çalışmasının paralel olarak farklı uzak makineler arasında dağıtılmasına yardımcı olur. Izgara, bir hub ve çeşitli düğümlerden oluşur.
Bu düğümler, test senaryolarını yürütebileceğiniz Selenium paketinin örneklerini çalıştırır. Merkezi hub bir sunucu görevi görür ve tüm test yürütmesini kontrol etmek için düğümler ona bağlanır.
Ayrıntılı Selenyum Web Sürücüsü

Genel olarak, bir Web Sürücüsü, bir dizi Uygulama Programlama Arabirimi'dir (API'ler) ve birçok yeteneğe sahip nesne yönelimli bir araçtır. Tarayıcılar ve diller arasında iletişim olanakları sunar.
WebDriver, birden çok popüler tarayıcıda çeşitli testler yürütmek için kullanılır. Ayrıca, findElement() , By() , get() , vb. gibi farklı türde soyut yöntemler içerir.
2009'da Selenium RC, Selenium WebDriver veya Selenium 2.0 adlı yeni bir Selenium aracı oluşturmak için WebDriver ile birleştirildi.
Şimdi, Selenium Webdriver , Selenium'un popüler bir aracıdır. Web uygulamalarının test edilmesini otomatikleştirmek için geliştiricilere açık kaynaklı ve ücretsiz kitaplıklar sunar.
Selenium WebDriver'da, desteklenen çeşitli programlama dilleri kullanılarak test komut dosyaları geliştirilir. En modern web tarayıcılarında çalıştırılabilir. Ayrıca Perl, Python, Ruby, Java, PHP ve C# gibi farklı dilleri de destekler.

Ancak şu anda Selenium WebDriver, C# ve Java ile en popüler olanıdır. Tarayıcılara doğrudan çağrı yaptığı için Selenium RC'den çok daha hızlı çalışır. Ayrıca, WebDriver, yerleşik bir Firefox Sürücüsü veya Gecko Sürücüsü uygulamasından oluşur.
Diğer tarayıcılarda test yapmak için iletişim kurmak ve otomasyon testini çalıştırmak için tarayıcıya özel sürücüleri takmanız gerekir. En çok kullanılan Web Sürücüleri şunlardır:
- Google Chrome Sürücüsü
- Opera Sürücüsü
- Internet Explorer Sürücüsü
- HTML Birimi Sürücüsü – başsız sürücü
- Safari Sürücüsü
Selenium WebDriver, web otomasyonu için kararlılığı ve çeşitliliği nedeniyle iyi bilinmektedir. Şirketlerin %80'inden fazlası, UI otomasyonunun en kolay yolu olduğu için Selenium WebDriver'ı kullanıyor.
Selenium WebDriver'ın Bileşenleri

Selenium WebDriver dört temel bileşenden oluşur:
- Selenyum Dil Bağları
- JSON Tel Protokolü
- Tarayıcı Sürücüleri
- Gerçek Tarayıcılar
Selenium WebDriver'ın temel bileşenlerini ayrıntılı olarak tartışalım.
#1. Selenium Dil Bağlama/ Çekirdek Kitaplıklar/ Selenyum İstemcisi
Otomasyon komut dosyaları, Web sürücüsü aracılığıyla Selenium sunucusuyla etkileşime girer. Ruby, Python, Java ve daha fazlası gibi farklı programlama dillerinde yazılmıştır.
Selenium geliştiricileri, Selenium'un bu programlama dillerini desteklemesine izin veren dil bağlamaları geliştirir. İstemci kitaplıkları yalnızca farklı Jar dosyalarıdır. Bu kitaplıklar, otomasyon için test komut dosyaları oluşturmak için gerekli olan Selenium WebDriver yöntemlerine ve sınıflarına sahiptir.
Selenium çekirdek kitaplıklarını kurmak için ilgili diller için mevcut paket yükleyicileri kullanabilirsiniz. Örneğin, Java'da bir tarayıcı sürücüsü kullanmak istiyorsanız, Java istemci kitaplıklarına veya Jar dosyalarına ihtiyacınız olacaktır.

Selenium istemci kitaplıkları, test çerçevesi değil, programdan Selenium komutlarını yürütmek için bir dizi işlev anlamına gelen bir API sağlarlar.
#2. HTTP üzerinden JSON Tel Protokolü
JavaScript Nesne Gösterimi (JSON), JavaScript'in alt kümesini temel alan popüler bir veri değişim biçimidir. JSON, web üzerinde sunucu ve istemci arasında veri alışverişi yapmak için kullanılır.
JSON Wire Protocol, Python, Ruby, Java vb. gibi tüm popüler dillerde bulunan tüm veri formatlarını destekler. JSON kullanarak web üzerinde istemci ve sunucu arasında veri aktaran bir aktarım mekanizmasıdır.
Ayrıca JSON, HTTP sunucusu arasında veri aktarmak için bir REST API kullanır ve her tarayıcı sürücüsünün kendi HTTP sunucusu vardır.
#3. Tarayıcı Sürücüleri

Selenium, tarayıcının işlevselliğinin herhangi bir dahili mantığını açığa çıkarmadan güvenli iletişim kurmak için her tarayıcı için belirli sürücüler kullanır. Bu sürücüler, Selenium dil bağlamasından istek alır ve tarayıcıda gerekli işlemleri başlatır.
Selenium, otomasyon için neredeyse tüm modern tarayıcıları destekler. Tarayıcı sürücüleri, bir WebDriver Arabirimi uygulayan RemoteWebDriver adlı başka bir sınıfı genişletir.
#4. Gerçek ve Başsız Tarayıcı
Tarayıcı temel olarak insanların web'deki içeriği görmek veya aramak için kullandığı bir yazılım programıdır. Selenium WebDriver, gerçek ve başsız tarayıcıları destekler.
Örnek: Selenium WebDriver kullanarak testleri otomatikleştirmek ve komut dosyasını Chrome gibi herhangi bir gerçek tarayıcıda yürütmek istediğinizi varsayalım. Bunu yapmak için, belirli sürücü uygulamasını indirmeniz gerekecektir. HTMLUnit tarayıcısı (HTMLUnitDriver), başsız bir tarayıcı örneğidir.
Selenyum Web Sürücüsü Nasıl Çalışır?
Gerçek zamanlı bir senaryoda, desteklenen Selenium istemci kitaplıklarından herhangi biri kullanılarak bir komut dosyası kodu yazıldığında, doğru seçeneği tıklatarak programın kaynak kodunu çalıştırabilirsiniz. Çalıştır seçeneğine tıkladığınızda, tarayıcı açılacak ve web sitesinin URL'sine gidecektir.

WebDriver kullanarak test komut dosyasını çalıştırdığınızda, bazı adımlar dahili olarak gerçekleştirilir.
- Çalıştırmak için düğmeye tıkladığınızda, istemci kitaplığı programdan komutları çalıştırır ve bunları JSON biçimine dönüştürür. Her komut için tarayıcı sürücüsüne göndermek üzere HTTP üzerinden JSON Tel Protokolü aracılığıyla serileştirilmiş bir JSON formatı bulacaksınız. Her tarayıcı sürücüsü daha sonra HTTP isteklerini almak için bir HTTP sunucusu kullanır.
- JSON Wire Protocol, sunucu ve istemci arasında veri aktararak iletişim kurar. HTTP sunucusu gerekli tüm işlemleri gerçek tarayıcı üzerinde yapar. Tarayıcı, URL'yi yüklemek için istek gönderecektir.
- Tüm işlemler gerçekleştirildikten sonra yürütme durumunun HTTP üzerinden HTTP sunucusuna geri gönderilmesi gerekmektedir. Tarayıcı sürücüsü, isteği almak ve JSON Wire Protocol aracılığıyla kitaplığa geri göndermek için HTTP sunucusunu tekrar kullanır. İstemci kitaplığı daha sonra aynı şekilde programa geri gönderilir. Program daha sonra bir başarısızlık veya başarı bildirecektir.
Selenium WebDriver'ın Özellikleri

Selenium WebDriver'ın güçlü özellikleri şunlardır:
- Çoklu tarayıcı desteği: Selenium WebDriver, Chrome, Firefox, Safari, Opera, Internet Explorer vb. gibi çok çeşitli web tarayıcılarını ve bunların sürümlerini destekler. Ayrıca HTMLUnit tarayıcısı gibi başsız tarayıcıları da destekler.
- Çoklu dil desteği: Selenium WebDriver, Ruby, PHP, JavaScript, Pearl, Python, C# vb. gibi en yaygın kullanılan programlama dillerini destekler. Dillerden herhangi birini yetkinliğe göre seçme olanağı sağlar. Test komut dosyaları oluşturmaya kolayca başlayabilirsiniz.
- Hız: Selenium WebDriver hızlı işlemler gerçekleştirir. Tarayıcı ile iletişim için ara sunucular gerektirmez. Ayrıca, web tarayıcısı ile WebDriver İstemci Kitaplıkları arasında doğrudan iletişim sağlar.
- Basit ve kolay komutlar: Web Sürücüsü, test komut dosyalarında uygulamak için kolay ve basit komutlar sağlar. Örneğin, WebDriver kullanarak bir tarayıcı başlatmak istiyorsanız, new FirefoxDriver(), new ChromeFriver() ve daha fazlası gibi komutları kullanmanız gerekir.
- Sürücüler, yöntemler ve sınıflar: WebDriver, otomasyon testindeki olası değişiklikleri ele almak için çeşitli çözümler sunar. Ayrıca, dinamik bulucuların kullanımıyla test uzmanlarının açılır menüler, uyarılar, onay kutuları ve daha fazlası gibi karmaşık web öğelerini işlemesine yardımcı olur.
- Basit API komutları : WebDriver nesne yönelimli ve kompakttır, bu nedenle olağandışı ayrıntıları gizlemek için kapsülleme ve soyutlama kullanılabilir. Bu, Selenium WebDriver'ı basitleştirir.
- Kurulumu ve yapılandırması kolay: Selenium WebDriver, JavaScript veya AJAX kullanılarak oluşturulan eşzamansız web uygulamalarını test etme seçeneği sunar.
Selenium WebDriver'ın Avantajları

Selenium WebDriver'ın avantajlarından bazıları şunlardır:
- Selenium WebDriver sağlam, ücretsiz, açık kaynaklı ve taşınabilir bir araçtır.
- Windows, Linux ve Mac gibi çeşitli işletim sistemlerini destekler. Ayrıca Apache POI, Autoit vb. dahil olmak üzere üçüncü taraf araçlarını da destekler.
- Selenium WebDriver'ın popülaritesinin nedenlerinden biri olan paralel test yürütme işlemlerini destekler. Bu, test senaryolarını yürütme süresini azaltacaktır.
- Dinleyici ve Dinamik bulucunun uygulanmasını destekler.
- Selenium WebDriver'da, betiklerin her çalıştırılmasından önce bir sunucunun başlatılması gerekli değildir.
- Farklı test senaryolarını gruplamak ve test raporları oluşturmak için JUnit ve TestNG gibi herhangi bir üçüncü taraf araçla entegre edebilirsiniz.
- Jenkins, Docker ve Maven ile entegre ederek sürekli testler yapın.
Selenium WebDriver'ın Sınırlamaları
Selenium WebDriver'da avantajların yanı sıra bazı sınırlamalar da bulunmaktadır.
- Selenium WebDriver yalnızca web tabanlı uygulamaları test edebilir. Masaüstü uygulamaları ve pencere tabanlı uygulamalar Selenium kullanılarak test edilemez.
- Bir görüntü üzerinde test yapma imkanı yoktur.
- WebDriver, test sonucu dosyalarını otomatik olarak oluşturmaz. JUnit veya TestNG gibi çerçevelerle entegre etmeniz veya raporlar oluşturmanız gerekecek.
- Yeni tarayıcıları desteklemiyor.
- Eklenti yardımı yok.
- Barkod okuyucular, reCAPTCHA ve CAPTCHA, WebDriver kullanılarak otomatikleştirilemez.
Selenium WebDriver Kullanım Örnekleri

Selenium WebDriver, web uygulamaları ile uğraşanlar için farklı endüstrilerde birçok kullanıma sahiptir. Kullanımlarından bazıları aşağıdaki gibidir:
- Web tarayıcılarının en son sürümlerine ve Selenium kitaplıklarına uyması için WebDrivers sürümlerini güncelleme
- Birçok işletme, bir otomasyon çerçevesi uygulayarak senkronizasyon sorunlarını çözer
- Test verilerini JSON'da saklama
- Sayfa Nesne Modeli tasarım desenini kullanarak test edilen web uygulamasının kullanıcı arayüzünü modelleme
- Nesneye Yönelik Programlama (OOP'ler) Dillerini kullanarak otomasyon geliştirmeyi test etme
- Otomatik ekran görüntüleri alarak arızayı araştırmak
- Test otomasyonundan belirsizliğin kaldırılması
- Yüksek kaliteli test sonuçları oluşturma
Çözüm
Selenium WebDriver, Selenium paketinin önemli bir bileşenidir. Selenyumun beyni gibidir. Selenium WebDriver'daki API'ler, test sürecinin hızlı çalışmasına yardımcı olur. Selenium WebDriver'ın en önemli özellikleri tarayıcılar arası test, web sayfası otomasyonu, modern teknoloji desteği ve daha fazlasıdır.
Selenium WebDriver'daki tarayıcı sürücüleri, çeşitli web tarayıcılarıyla paketle etkileşime girmeye yardımcı olur. Bu nedenle Selenium WebDriver, Selenium otomasyon test çerçevesinin tamamı için önemlidir.
