geckodriver selenium tutorial
GeckoDriver Selenium Eğitimi: Selenium'da Gecko (Kukla) Sürücüsünün Nasıl Kullanılacağını Öğrenin
GeckoDriver'ın ne olduğunu anlamak için öncelikle Gecko ve Web tarayıcı motoru hakkında bilgi sahibi olmamız gerekir. Bu eğitim, GeckoDriver ile ilgili hemen hemen tüm özellikleri kapsar ve böylece size tam bir genel bakış sunar.
İlk olarak, bize Gecko'nun ne olduğunu ve Web Tarayıcı Motoru nedir?
Ne öğreneceksin:
- Gecko nedir?
- Web Tarayıcı Motoru nedir?
- GeckoDriver nedir?
- Selenium'un neden GeckoDriver'a ihtiyacı var?
- Selenium Projesinde GeckoDriver nasıl kullanılır?
- GeckoDriver ve TestNG
- Sistemin PATH Çevresel Değişkenine Yol Ekleme Adımları
- Gecko Sürücüsüz Sorunlar
- GeckoDriver hakkında ek bilgiler
- Sonuç
- Önerilen Kaynaklar
Gecko nedir?
Gecko bir web tarayıcı motorudur. Gecko gerektiren birkaç uygulama var. Spesifik olarak, Mozilla Foundation ve Mozilla Corporation tarafından geliştirilen uygulamalar. Gecko aynı zamanda birçok açık kaynak yazılım projesine ihtiyaç duymaktadır. Gecko, C ++ ve JavaScript ile yazılmıştır.
Son sürümler de Rust dilinde yazılmıştır. Gecko, ücretsiz ve açık kaynaklı bir web tarayıcı motorudur.
Web Tarayıcı Motoru nedir?
Web Tarayıcı Motoru bir yazılım programından başka bir şey değildir. Bu programın ana işlevi, içeriği (HTML, XML, resimler gibi) toplamak ve bilgileri biçimlendirmek (CSS gibi) ve bu biçimlendirilmiş içeriği ekranda görüntülemektir. Web Browser Engine, Layout Engine veya Rendering Engine olarak da adlandırılır.
Web tarayıcıları, e-posta istemcileri, e-kitap okuyucular, çevrimiçi yardım sistemleri vb. Uygulamalar web içeriğinin görüntülenmesine ihtiyaç duyar. Web içeriğini görüntülemek için web tarayıcı motoru gereklidir ve tüm bu uygulamaların bir parçasıdır. Her web tarayıcısı için farklı web tarayıcı motorları vardır.
Aşağıdaki tablo web tarayıcılarını ve hangi web tarayıcı motorlarını kullandıklarını göstermektedir.
Gecko, emülasyon olmadan aşağıdaki işletim sisteminde çalışır:
- pencereler
- Mac os işletim sistemi
- Linux
- BSD
- Unix
Bir Symbian işletim sisteminde çalışamaz.
GeckoDriver nedir?
GeckoDriver, tarayıcınız için Firefox tarayıcısına bağlantı bağlantısıdır. Selenium'daki komut dosyaları . GeckoDriver, HTTP API sağladığı Gecko tabanlı tarayıcılarla (örn.Firefox) iletişim kurmaya yardımcı olan bir proxy'dir.
Selenium'un neden GeckoDriver'a ihtiyacı var?
Firefox (sürüm 47 ve üzeri), üzerinde bazı değişiklikler yaptı ve bazı güvenlik nedenleriyle, herhangi bir üçüncü taraf sürücünün tarayıcılarla doğrudan etkileşime girmesine izin vermiyor. Bu nedenle Selenium2'yi Firefox'un son sürümlerinde kullanamıyoruz. Bu yüzden Selenium3'e ihtiyacımız var.
Selenium3 Kukla Sürücüsüne sahiptir. Selenium3, GeckoDriver'dan başka bir şey olmayan bir proxy kullanarak Firefox tarayıcısıyla doğrudan etkileşime girebilir.
Selenium Projesinde GeckoDriver nasıl kullanılır?
- En son sürümüne sahip olduğunuzu düşünelim Selenium WebDriver ve Firefox tarayıcısı.
- Ardından GeckoDriver'ı şuradan indirin: İşte . Daha sonra bilgisayarınıza uygun versiyonu seçin.
- Dosyaları ayıkla sıkıştırılmış klasörden
- Selenium3 kitaplıklarının referanslarını projenize ekleyin. Projeye sağ tıklayın => Yol Oluştur => Yapı Yolunu Yapılandır => Kitaplıklar => Harici Kavanoz Ekle.
- Seçiniz Lib klasörü => Clt + A => Aç'a tıklayın .
- Senden sonra aç tıklayın , aşağıdaki pencereyi göreceksiniz:
- Ardından Tamam'ı tıklayın.
- Şimdi kodumuzu yazalım ve GeckoDriver Yolunu belirtmek için system özelliğini kullanalım.
- Kodunuza aşağıdaki satırı ekleyin:
System.setProperty(“webdriver.gecko.driver”,”Path of the GeckoDriver file”).
** ( Çıkarılan dosyanın adresi nasıl kopyalanır. - (Klavyeden 'Shift'e basın ve dosyayı sağ tıklayın, bir seçenek göreceksiniz. Ardından' Dosyanın adresini kopyala '.))
** ( Bu kopyalayıp yapıştırılan yolda, çift ters eğik çizgi olduğundan emin olun, aksi takdirde kodda sözdizimi hatası olur.)
Bir örnek ele alalım
Misal
İşte Google web sayfasını bir Firefox tarayıcısında açtığımız ve web sayfasının başlığını doğruladığımız basit bir komut dosyası.
Kod1:
import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; publicclass First_Class { publicstaticvoid main(String() args) { System.setProperty('webdriver.gecko.driver','E:\GekoDriver\geckodriver-v0.15.0-win64\geckodriver.exe'); WebDriver driver=new FirefoxDriver(); driver.get('https://www.google.com/'); driver.manage().window().maximize(); String appTitle=driver.getTitle(); String expTitle='Google'; if (appTitle.equals (expTitle)){ System.out.println('Verification Successfull'); } else{ System.out.println('Verification Failed'); } driver.close(); System.exit(0); } }
Kodu Anlamak
# 1) org.openqa.selenium.WebDriver'ı içe aktarın- Burada tüm referansları WebDriver arayüzüne aktarıyoruz. Daha sonra, bu WebDriver arayüzü yeni bir tarayıcının somutlaştırılması için gereklidir.
# 2) org.openqa.selenium.firefox.FirefoxDriver- Burada tüm referansları FirefoxDriver sınıfına aktarıyoruz.
# 3) setProperty (Dize anahtarı, Dize değeri) - Burada Key olarak adlandırılan özelliğin adını ve Value olarak adlandırılan yolunu sağlayarak sistem özelliğini ayarlıyoruz.
Anahtar -Sistem özelliğinin adı, yani webdriver.gecko.driver .
Değer - Gecko Driver'ın exe dosyasının adresi.
# 4) WebDriver sürücüsü = yeni FirefoxDriver () - Bu kod satırında, WebDriver'ın referans değişkenini 'sürücü' oluşturuyoruz ve bu referans değişkeni FirefoxDriver sınıfı kullanılarak başlatılıyor. Firefox örneği ile uzantıları ve eklentileri olmayan bir Firefox profili başlatılacaktır.
# 5) get ('URL') - Bu Get yöntemini kullanarak, belirtilen URL'yi tarayıcıda açabiliriz. Bu Get yöntemi, WebDriver'ın referans değişkeni, yani sürücü kullanılarak çağrılır. Dize Get yöntemine geçirilir, bu da uygulama URL'mizin bu Get yöntemine geçirildiği anlamına gelir.
# 6) yönet (). Pencere (). Maximize () - Bu kod satırını kullanarak tarayıcı penceresini maksimize ediyoruz. Tarayıcı belirtilen URL'yi açar açmaz, bu satır kullanılarak maksimize edilir.
# 7) getTitle () - Bu kod satırını kullanarak web sayfasının başlığını bulabileceğiz. Bu yöntem, WebDriver'ın referans değişkeni 'sürücü' kullanılarak da çağrılır. Bu başlığı 'appTitle' String değişkenine kaydediyoruz.
# 8) Karşılaştırma– Burada appTitle'ı karşılaştırıyoruz (geçecek driver.getTitle () yöntem) ve expTitle ('Google' dır) If ifadesini kullanarak. Bu sadece basit bir If-else ifadesidir. 'Eğer' koşulu sağlandığında, 'Doğrulama Başarılı' mesajını yazdırıyoruz, aksi takdirde 'Doğrulama Başarısız' mesajını yazdırıyoruz.
if (appTitle.equals (expTitle)) { System.out.println ('Verification Successful'); } else { System.out.println('Verification Failed'); }
# 9) driver.close () - Bu kod satırı tarayıcıyı kapatır. Bu satır sadece mevcut pencereyi kapatır.
# 10) System.exit (0) - Bu kod satırı yöntemi, Java Sanal Makinesi çalıştırmayı sonlandırmak için kullanılır. Bu nedenle, bu satırdan önce tüm açık pencereleri veya dosyaları kapatmanız önerilir.
GeckoDriver ve TestNG
Kodda çok fazla fark yok ama burada sadece referansınız için bir kod ekliyorum.
MİSAL:
Örneğe geçelim. Örneğimiz, Google.com web sayfasını açmak, başlığını almak ve yazdırmaktır.
Kod2:
import org.testng.annotations.Test; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; publicclass TstNG { @Test publicvoid f() { System.setProperty('webdriver.gecko.driver','E:\GekoDriver\geckodriver-v0.15.0-win64\geckodriver.exe'); WebDriver driver=new FirefoxDriver(); driver.get('https://www.google.com/'); driver.manage().window().maximize(); String appurl=driver.getTitle(); System.out.println(appurl); driver.close(); // System.exit(0); } }
TestNG kodunu yazarken hatırlanması gereken noktalar:
# 1) Önceki örnekte olduğu gibi f () işlevi içinde System.setProperty (Dize anahtarı, Dize değeri) yöntemini kullanın. Bu örnekte, ana işlevde yazdık. Ancak TestNG'de ana () işlev yoktur. Bunu işlevin dışında yazarsanız bir sözdizimi hatası alırsınız.
#iki) Hatırlanması gereken en önemli ikinci şey System.exit (0). Bu kod satırını TestNG komut dosyanıza eklemenize gerek yoktur. Bunun bir nedeni vardır: TestNG komut dosyasını çalıştırdıktan sonra, oluşturulan raporları ve sonucu görüntüleyebileceğiniz çıktı klasörü oluşturulur, betiğinize System.exit (0) eklerseniz bu klasör (çıktı klasörü) almayacaktır oluşturulur ve raporları görüntüleyemezsiniz.
Sistemin PATH Çevresel Değişkenine Yol Ekleme Adımları
- Windows sisteminde Bilgisayarım veya Bu PC'ye sağ tıklayın.
- Özellikler'i seçin.
- Gelişmiş sistem ayarlarını seçin.
- Ortam Değişkenleri düğmesine tıklayın.
- Sistem Değişkenlerinden PATH'i seçin.
- Düzenle düğmesine tıklayın.
- Yeni düğmesini tıklayın
- GeckoDriver dosyasının yolunu yapıştırın.
- Tamam'ı tıklayın.
Gecko Sürücüsüz Sorunlar
Aşağıda verilenler gibi bazı sorunlarla karşılaşabilirsiniz.
# 1) Firefox ve Selenium3'ün eski bir sürümünü kullanıyorsanız, aşağıdaki istisnayı alırsınız:
youtube müzik videoları ücretsiz indirme yazılımı
'Main' iş parçacığında istisna java.lang.IllegalStateException
#iki) Firefox'un en son sürümünü ve Selenium'un eski bir sürümünü kullanıyorsanız, aşağıdaki istisnayı alırsınız:
org.openqa.selenium.firefox.NotConnectedException : 45000 ms sonra 7055 numaralı bağlantı noktasında 127.0.0.1 ana bilgisayarına bağlanılamıyor
# 3) Firefox ve WebDriver'ın en son sürümünü kullanıyor ancak GeckoDriver'ı kullanmıyorsanız, aşağıdaki istisnayı alırsınız:
'Main' iş parçacığında istisna java.lang.IllegalStateException: Çalıştırılabilir sürücünün yolu webdriver.gecko.driver sistem özelliği tarafından ayarlanmalıdır; Daha fazla bilgi için bakınız İşte .En son sürüm şuradan indirilebilir: İşte .
GeckoDriver hakkında ek bilgiler
Bildiğimiz gibi GeckoDriver, HTTP API sağladığı Gecko tabanlı tarayıcılarla (örn.Firefox) iletişim kurmaya yardımcı olan bir proxy'dir.
Bu HTTP API, WebDriver protokolü kullanılarak anlaşılabilir. WebDriver protokolünde Yerel uç, Uzak uç, Ara düğüm ve Uç Nokta düğümünü içeren bazı düğümler vardır. Bu düğümler arasındaki iletişim WebDriver protokolünde açıklanmıştır.
Yerel uç, WebDriver protokolünün istemci tarafıdır. Uzak uç, WebDriver protokolünün sunucu tarafı anlamına gelir. Aracı düğüm, proxy rolünü yerine getirir. Uç nokta düğümü, bir kullanıcı aracısı veya benzer bir program tarafından yürürlüğe konulur.
WebDriver tarafından GeckoDriver'a gönderilen komutlar ve yanıtlar Kukla Protokolüne çevrilir ve ardından GeckoDriver tarafından Kukla Sürücüsüne aktarılır. Dolayısıyla, GeckoDriver'ın bu iki WebDriver ve Marionette arasında bir proxy görevi gördüğünü söyleyerek sonuca vardık.
Marionette, sunucu bölümü ve istemci bölümü olmak üzere 2 bölüme ayrılmıştır. İstemci kısmı tarafından gönderilen komutlar sunucu kısmı tarafından yürütülür.
Bu komut yürütme çalışması tarayıcının içinde gerçekleştirilir. Kukla, bir kertenkele bileşeni (bir Kukla sunucusu olan) ve bir dış bileşen (Kukla İstemcisi olarak adlandırılan) kombinasyonundan başka bir şey değildir. GeckoDriver, Rust programlama dilinde yazılmıştır.
Sonuç
GeckoDriver, Selenium komut dosyalarınız ile Firefox gibi Gecko tabanlı tarayıcılar arasında bir ara faktördür.
GeckoDriver, Gecko tabanlı tarayıcılarla ( Örneğin. Firefox). Firefox (sürüm47 ve üstü), üçüncü taraf sürücülerin tarayıcılarla doğrudan etkileşimde bulunmasının desteklenmesinin engellenmesine yol açan bazı değişiklikler yaptı.
GeckoDriver'ı kullanmamızın ana nedeni budur. Betiğinizde GeckoDriver'ı kullanmanın en kolay yolu, System.set özelliği. (System.setProperty ('webdriver.gecko.driver', 'Gecko Sürücü dosyasının Yolu')).
GeckoDriver'da yeni misiniz? Bu GeckoDriver Selenium'da bugün yeni bir şey öğrendiniz mi? Veya GeckoDriver hakkında bizimle paylaşmak istediğiniz ilginç bir şeyler mi var? Aşağıdaki yorumlar bölümünde düşüncelerinizi ifade etmekten çekinmeyin.
Önerilen Kaynaklar
- Salatalık Selenium Eğitimi: Salatalık Java Selenium WebDriver Entegrasyonu
- Selenium WebDriver'a Giriş - Selenium Eğitimi # 8
- Selenyum Örneklerle Metin Eğitimi ile Eleman Bul
- İlk WebDriver Komut Dosyamızın Uygulanması - Selenium WebDriver Eğitimi # 10
- Selenium WebDriver'da Uyarılar / Açılır Pencereler Nasıl İşlenir - Selenium Eğitimi # 16
- Eclipse ile WebDriver Tam Kurulum ve Kurulum - Selenium Eğitimi # 9
- Yeni Başlayanlar İçin Derinlemesine Eclipse Eğiticileri
- Etkili Selenium Komut Dosyası Oluşturma ve Sorun Giderme Senaryoları - Selenium Eğitimi # 27