Apa itu Pemandu Gecko?
Istilah Gecko bermaksud mesin Penyemak Imbas Web yang terbina dalam penyemak imbas Mozilla Firefox. Pemacu tokek bertindak sebagai proksi antara klien yang membolehkan Pemandu Web (Eclipse, Netbeans, dll.) Dan penyemak imbas Mozilla Firefox. Ringkasnya, pemandu Gecko bertindak sebagai penghubung antara ujian Pemandu Web Selenium dan penyemak imbas Mozilla Firefox.
Sebelum Selenium 3, penyemak imbas Mozilla Firefox adalah penyemak imbas lalai untuk Selenium. Selepas Selenium 3, penguji perlu menginisialisasi skrip untuk menggunakan Firefox menggunakan GeckoDriver secara eksplisit. Selenium menggunakan protokol W3C Webdriver untuk mengirim permintaan ke GeckoDriver, yang menerjemahkannya menjadi protokol bernama Marionette. Firefox akan memahami arahan yang dihantar dalam bentuk protokol Marionette dan melaksanakannya.
Kelebihan menggunakan Gecko Driver
Selenium Webdriver versi 2.53 tidak serasi dengan Mozilla Firefox versi 47.0+. Pemacu Firefox yang digunakan dalam versi sebelumnya Mozilla Firefox akan dihentikan, dan hanya pelaksanaan GeckoDriver yang akan digunakan. Oleh itu penguji terpaksa menggunakan GeckoDriver jika mereka ingin menjalankan ujian automatik pada Mozilla Firefox versi 47.0+. Tetapi persoalan besar - apakah kelebihannya?
Kelebihan utama menggunakan GeckoDriver berbanding pemacu Firefox lalai adalah Keserasian . GeckoDriver menggunakan protokol W3C WebDriver untuk berkomunikasi dengan Selenium. W3C adalah standard yang ditetapkan secara universal untuk Pemacu Web. Ini bermaksud Pembangun Selenium (Orang yang membuat kod asas Selenium) tidak perlu membuat Pemacu Web versi baru untuk setiap versi penyemak imbas. Pemacu Web yang sama boleh digunakan untuk pelbagai versi penyemak imbas. Oleh itu, GeckoDriver lebih disukai berbanding pelaksanaan pemacu Firefox sebelumnya.
Muat turun dan Pasang Pemacu Gecko:
Pemandu Gecko tersedia sebagai fail yang boleh dilaksanakan yang boleh dimuat turun di sistem. Berikut adalah senarai langkah untuk memuat turun pemacu tokek.
Langkah 1) Di halaman ini https://github.com/mozilla/geckodriver/releases, Pilih versi yang sesuai untuk muat turun GeckoDriver berdasarkan sistem operasi anda
Langkah 2) Setelah muat turun fail ZIP selesai, ekstrak kandungan Fail ZIP ke folder fail
Langkah 3) Perhatikan lokasi di mana anda mengekstrak pemacu. Lokasi akan digunakan kemudian untuk memberi contoh pemandu.
Cara untuk memulakan GeckoDriver:
Terdapat tiga cara berbeza untuk memulakan GeckoDriver.
1. Menggunakan Keupayaan yang Diinginkan:
Pertama, tetapkan sifat sistem untuk Pemandu Gecko.
Sintaks:
System.setProperty ("webdriver.gecko.driver", "Laluan ke fail geckdriver.exe");
Contoh:
System.setProperty ("webdriver.gecko.driver", "D: \\ Muat turun \\ GeckoDriver.exe");
Seterusnya, tetapkan Keupayaan yang Diinginkan.
Keupayaan yang diinginkan membantu Selenium memahami nama penyemak imbas, versi dan sistem operasi untuk melaksanakan ujian automatik. Berikut adalah kod untuk menetapkan pemacu tokek menggunakan kelas DesiredCapabilities.
Keupayaan DesiredCapabilities = DesiredCapabilities.firefox ();kemampuan.setCapability ("marionette", benar);
Inilah kod lengkapnya
System.setProperty ("webdriver.gecko.driver", driverPath);Keupayaan DesiredCapabilities = DesiredCapabilities.firefox ();kemampuan.setCapability ("marionette", benar);driver = FirefoxDriver (keupayaan) baru;
2. Menggunakan harta marionette:
Pemandu tokek juga dapat diinisialisasi menggunakan harta marionette seperti di bawah
System.setProperty ("webdriver.gecko.driver", "D: \\ Muat turun \\ GeckoDriver.exe");
Sekiranya pemacu tokek diinisialisasi menggunakan kaedah di atas, kod untuk keupayaan yang diinginkan tidak diperlukan.
3. Menggunakan FirefoxOptions:
Mozilla Firefox versi 47+ mempunyai pemacu marionette sebagai sistem warisan. Dengan memanfaatkan ini, pemacu marionette boleh dipanggil menggunakan Firefox Options seperti di bawah
Opsyen FirefoxOptions = FirefoxOptions baru ();options.setLegacy (benar);
Kod untuk melancarkan firefox menggunakan pemacu Gecko:
pakej com.guru99.demo;import org.junit.Setelah;import org.junit.Sebelum;import org.junit.Test;import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;import org.openqa.selenium.remote.DesiredCapabilities;kelas awam GeckoDriverDemo {String driverPath = "D: \\ Guru99Demo \\ GeckoDriver.exe";pemacu WebDriver awam;@Sebelum inipublic boid startBrowser () {System.setProperty ("webdriver.gecko.driver", driverPath);Keupayaan DesiredCapabilities = DesiredCapabilities.firefox ();kemampuan.setCapability ("marionette", benar);driver = FirefoxDriver (keupayaan) baru;}@ Ujiankekosongan awam navigateToUrl () {driver.get ("http://demo.guru99.com/selenium/guru99home/");}@Selepasujian awam tidak sah () {driver.quit ();}}
Penjelasan Kod:
Kaedah sebelum:
Pada mulanya, kita perlu menetapkan sifat sistem untuk pemacu tokek ke lokasi muat turun fail geckdriver.exe. Kita perlu menetapkan hak milik marionette agar Selenium menggunakan protokol Marionette untuk berkomunikasi dengan Pemandu Gecko. Akhirnya, kita perlu memulakan contoh penyemak imbas Firefox menggunakan objek untuk Keupayaan yang Diinginkan.
Pernyataan di bawah membantu untuk mencapai tugas di atas.
System.setProperty ("webdriver.gecko.driver", driverPath);Keupayaan DesiredCapabilities = DesiredCapabilities.firefox ();kemampuan.setCapability ("marionette", benar);driver = FirefoxDriver (keupayaan) baru;
Kaedah ujian:
Kami menavigasi ke URL yang ditentukan pengguna menggunakan kaedah "get" terbina dalam yang disediakan oleh pemacu web Selenium. Pernyataan di bawah membantu mencapai perkara yang sama.
driver.get ("http://demo.guru99.com/selenium/guru99home/");
@Setelah kaedah:
Akhirnya, kami menutup contoh penyemak imbas menggunakan kaedah berhenti.
driver.quit ();
Ubahsuai skrip untuk bukan Gecko ke Gecko:
Skrip pemacu bukan tokek yang digunakan sebelum Selenium 3 mudah. Kita perlu membuat contoh pemacu Firefox dan menggunakan pemboleh ubah instance.
@Sebelum inipublic boid startBrowser () {driver = FirefoxDriver baru ();}
Untuk menukar ke tokek, anda hanya perlu menambahkan satu baris kod
@Sebelum inipublic boid startBrowser () {System.setProperty ("webdriver.gecko.driver", "D: \\ Muat turun \\ GeckoDriver.exe");driver = FirefoxDriver baru ();}
Pengecualian biasa berlaku semasa menggunakan Pemacu Gecko:
Berikut adalah senarai pengecualian umum yang berlaku semasa menggunakan Pemacu Gecko dan dengan resolusi.
1. Jalan ke pemacu yang boleh dilaksanakan mesti ditetapkan oleh harta sistem webdriver.gecko.driver:
Pengecualian ini berlaku apabila pengguna cuba membuat pemacu Firefox tanpa menetapkan sifat sistem untuk pemacu tokek. Ini biasanya dilakukan oleh pemula hingga Selenium yang tidak mengetahui perubahan yang dilakukan dari Selenium 3 ke Selenium versi sebelumnya.
Resolusi untuk pengecualian di atas adalah menetapkan sifat sistem untuk pemandu tokek dengan lokasi fail geckodriver.exe seperti di bawah
System.setProperty ("webdriver.gecko.driver", "D: \\ Muat turun \\ geckodriver.exe");
Harap maklum bahawa anda perlu menetapkan sifat pemacu tokek sebelum membuat contoh pemacu Mozilla Firefox.
2. Pengecualian Firefox Tidak Terhubung:
org.openqa.selenium.firefox.NotConnectedException: Tidak dapat menyambung ke hos 127.0.0.1 pada port 7055 selepas 45000 ms.
Pengecualian ini biasanya berlaku apabila versi Firefox telah ditingkatkan ke versi terkini. Resolusi untuk pengecualian ini adalah untuk mengemas kini fail jar selenium dan pemacu tokek ke versi terbaru dan menggunakan yang sama.
3. Sesi Tidak Dibuat Pengecualian:
org.openqa.selenium.SessionNotCreatedException: Tidak dapat membuat sesi jauh yang baru.
Pengecualian ini berlaku kerana masalah keserasian antara pemandu Selenium dan Gecko. Pemacu Gecko berfungsi dengan Firefox versi 47 atau lebih tinggi. Ia dapat diselesaikan dengan mengemas kini versi Firefox ke 47 atau lebih tinggi.
4. Pengecualian Penolakan Sambungan:
Pengecualian Pemandu Web: Sambungan Ditolak
Pengecualian ini adalah mesej yang dihasilkan apabila pemandu web tidak dapat menjalin hubungan dengan Firefox. Ia dapat diselesaikan dengan menggunakan salah satu teknik berikut.
- Gunakan kaedah driver.quit () untuk memusnahkan contoh pemacu web sebelumnya
- Bersihkan cache penyemak imbas sebelum menjalankan ujian automatik anda
- Bersihkan ruang kerja projek dalam Eclipse IDE
- Sentiasa gunakan pemacu tokek selenium versi terkini dan penyemak imbas Firefox versi terbaru