Ce este Gecko Driver?
Termenul Gecko înseamnă un motor de browser web care este încorporat în browserul Mozilla Firefox. Driverul Gecko acționează ca un proxy între clienții Web Driver (Eclipse, Netbeans etc.) și browserul Mozilla Firefox. Pe scurt, driverul Gecko acționează ca o legătură între testele Selenium Web Driver și browserul Mozilla Firefox.
Înainte de Selenium 3, browserul Mozilla Firefox era browserul implicit pentru Selenium. După Selenium 3, testerii trebuie să inițializeze scriptul pentru a utiliza Firefox folosind explicit GeckoDriver. Selenium folosește protocolul W3C Webdriver pentru a trimite cereri către GeckoDriver, care le transformă într-un protocol numit Marionette. Firefox va înțelege comenzile transmise sub forma protocolului Marionette și le va executa.
Avantajul utilizării driverului Gecko
Selenium Webdriver versiunea 2.53 nu este compatibil cu Mozilla Firefox versiunea 47.0+. Driverul Firefox utilizat în versiunile anterioare ale Mozilla Firefox va fi întrerupt și va fi utilizată doar implementarea GeckoDriver. Prin urmare, testerii sunt obligați să utilizeze GeckoDriver dacă doresc să ruleze teste automate pe Mozilla Firefox versiunea 47.0+. Dar marea întrebare - care este avantajul?
Avantajul major al utilizării GeckoDriver spre deosebire de driverul implicit Firefox este Compatibilitatea . GeckoDriver folosește protocolul W3C WebDriver pentru a comunica cu Selenium. W3C este un standard universal definit pentru driverul Web. Aceasta înseamnă că Selenium Developers (Persoanele care codifică Selenium base) nu trebuie să creeze o nouă versiune de Web Driver pentru fiecare versiune de browser. Același driver Web poate fi utilizat pentru mai multe versiuni de browser. Prin urmare, GeckoDriver este preferat în comparație cu implementarea anterioară a driverului Firefox.
Descărcați și instalați driverul Gecko:
Gecko Driver este disponibil ca fișier executabil care poate fi descărcat pe sistem. Următoarele sunt lista pașilor pentru descărcarea driverului gecko.
Pasul 1) La această pagină https://github.com/mozilla/geckodriver/releases, selectați versiunea potrivită pentru descărcarea GeckoDriver pe baza sistemului dvs. de operare
Pasul 2) Odată ce descărcarea fișierului ZIP este completă, extrageți conținutul fișierului ZIP într-un folder de fișiere
Pasul 3) Notați locația în care ați extras driverul. Locația va fi utilizată mai târziu pentru a instanța driverul.
Modalități de inițializare a GeckoDriver:
Există trei moduri diferite de a inițializa GeckoDriver.
1. Folosind DesiredCapabilities:
Mai întâi, setați proprietatea sistemului pentru Gecko Driver.
Sintaxă:
System.setProperty ("webdriver.gecko.driver", "Calea către fișierul geckdriver.exe");
Exemplu:
System.setProperty ("webdriver.gecko.driver", "D: \\ Downloads \\ GeckoDriver.exe");
Apoi, setați Capabilități dorite.
Capacitățile dorite ajută Selenium să înțeleagă numele browserului, versiunea și sistemul de operare pentru a executa testele automate. Mai jos este codul pentru a seta driverul gecko folosind clasa DesiredCapabilities.
Capabilități DesiredCapabilities = DesiredCapabilities.firefox ();powers.setCapability ("marionetă", adevărat);
Iată codul complet
System.setProperty ("webdriver.gecko.driver", driverPath);Capabilități DesiredCapabilities = DesiredCapabilities.firefox ();powers.setCapability ("marionetă", adevărat);driver = nou FirefoxDriver (capabilități);
2. Utilizarea proprietății de marionetă:
Șoferul Gecko poate fi, de asemenea, inițializat folosind proprietatea marionetă, după cum urmează
System.setProperty ("webdriver.gecko.driver", "D: \\ Downloads \\ GeckoDriver.exe");
Dacă driverul gecko este inițializat folosind metoda de mai sus, nu este necesar codul pentru capacitățile dorite .
3. Utilizarea FirefoxOptions:
Mozilla Firefox versiunea 47+ are driver de marionetă ca sistem vechi. Profitând de acest lucru, driverul de marionetă poate fi apelat folosind opțiunile Firefox, după cum urmează
Opțiuni FirefoxOptions = new FirefoxOptions ();options.setLegacy (adevărat);
Cod pentru lansarea Firefox folosind driverul Gecko:
pachet com.guru99.demo;import org.junit.After;import org.junit.Înainte;import org.junit.Test;import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;import org.openqa.selenium.remote.DesiredCapabilities;clasă publică GeckoDriverDemo {String driverPath = "D: \\ Guru99Demo \\ GeckoDriver.exe";driver public WebDriver;@Inainte depublic void startBrowser () {System.setProperty ("webdriver.gecko.driver", driverPath);Capabilități DesiredCapabilities = DesiredCapabilities.firefox ();powers.setCapability ("marionetă", adevărat);driver = nou FirefoxDriver (capabilități);}@Testpublic void navigateToUrl () {driver.get ("http://demo.guru99.com/selenium/guru99home/");}@Dupăpublic void endTest () {driver.quit ();}}
Explicatie cod:
@ Înainte de metodă:
Inițial, trebuie să setăm proprietatea sistemului pentru driverul gecko la locația de descărcare a fișierului geckdriver.exe. Trebuie să setăm proprietatea marionette la adevărat pentru ca Selenium să utilizeze protocolul Marionette pentru a comunica cu driverul Gecko. În cele din urmă, trebuie să pornim instanța browserului Firefox folosind obiectul pentru Capabilități dorite.
Afirmațiile de mai jos ajută la realizarea sarcinii de mai sus.
System.setProperty ("webdriver.gecko.driver", driverPath);Capabilități DesiredCapabilities = DesiredCapabilities.firefox ();powers.setCapability ("marionetă", adevărat);driver = nou FirefoxDriver (capabilități);
@Metoda de test:
Navigăm la adresa URL specificată de utilizator utilizând metoda încorporată „obțineți” furnizată de driverul web Selenium. Afirmația de mai jos ajută la realizarea aceluiași lucru.
driver.get ("http://demo.guru99.com/selenium/guru99home/");
@After method:
În cele din urmă, închidem instanța browserului folosind metoda quit.
driver.quit ();
Modificați un script pentru non-Gecko în Gecko:
Scriptul de driver non-gecko folosit înainte de Selenium 3 a fost simplu. Trebuie să creăm o instanță a driverului Firefox și să folosim variabila de instanță.
@Inainte depublic void startBrowser () {driver = nou FirefoxDriver ();}
Pentru a converti în gecko, trebuie să adăugați pur și simplu o linie de cod
@Inainte depublic void startBrowser () {System.setProperty ("webdriver.gecko.driver", "D: \\ Downloads \\ GeckoDriver.exe");driver = nou FirefoxDriver ();}
Au apărut excepții frecvente în timpul utilizării driverului Gecko:
Mai jos este o listă de excepții obișnuite care apar în timpul utilizării driverului Gecko și cu rezoluție.
1. Calea către executabilul driverului trebuie setată de proprietatea sistemului webdriver.gecko.driver:
Această excepție apare atunci când utilizatorul încearcă să instanțeze driverul Firefox fără a seta proprietatea sistemului pentru driverul gecko. Acest lucru este de obicei făcut de începători în Selenium care nu sunt conștienți de modificările făcute de la Selenium 3 la Selenium versiunile anterioare.
Rezoluția pentru excepția de mai sus este de a seta proprietatea sistemului pentru driverul gecko cu locația fișierului geckodriver.exe ca mai jos.
System.setProperty ("webdriver.gecko.driver", "D: \\ Downloads \\ geckodriver.exe");
Vă rugăm să rețineți că trebuie să setați proprietatea driverului gecko înainte de a crea o instanță a driverului Mozilla Firefox.
2. Excepție Firefox neconectat:
org.openqa.selenium.firefox.NotConnectedException: Imposibil de conectat la gazda 127.0.0.1 pe portul 7055 după 45000 ms.
Această excepție apare de obicei atunci când versiunea Firefox a fost actualizată la cea mai recentă versiune. Rezoluția pentru această excepție este de a actualiza fișierul de seleniu jar și driverul gecko la cea mai recentă versiune și de a folosi același lucru.
3. Sesiunea nu a fost creată excepție:
org.openqa.selenium.SessionNotCreatedException: Nu se poate crea o nouă sesiune la distanță.
Această excepție apare din cauza problemelor de compatibilitate dintre driverul Selenium și Gecko. Driverul Gecko funcționează cu Firefox versiunea 47 sau mai mare. Poate fi rezolvat prin actualizarea versiunii Firefox la 47 sau mai sus.
4. Excepție refuzată de conexiune:
Excepție WebDriver: conexiune refuzată
Această excepție este mesajul generat atunci când driverul web nu poate stabili o conexiune cu Firefox. Poate fi rezolvat folosind oricare dintre următoarele tehnici.
- Utilizați metoda driver.quit () pentru a distruge instanțele anterioare ale driverului web
- Curățați memoria cache a browserului înainte de a executa testele automate
- Curățați spațiul de lucru al proiectului în Eclipse IDE
- Folosiți întotdeauna cea mai recentă versiune a driverului selenium gecko și cea mai recentă versiune a browserului Firefox