Vad är Gecko Driver?
Termen Gecko står för en webbläsarmotor som är inbyggd i webbläsaren Mozilla Firefox. Gecko-drivrutinen fungerar som en proxy mellan klienter med webbdrivrutiner (Eclipse, Netbeans, etc.) och webbläsaren Mozilla Firefox. Kort sagt, Gecko-drivrutinen fungerar som en länk mellan Selenium Driver-tester och webbläsaren Mozilla Firefox.
Innan Selenium 3 var webbläsaren Mozilla Firefox standardwebbläsaren för Selenium. Efter Selenium 3 måste testare initiera skriptet för att använda Firefox med hjälp av GeckoDriver uttryckligen. Selenium använder W3C Webdriver-protokoll för att skicka förfrågningar till GeckoDriver, vilket översätter dem till ett protokoll som heter Marionette. Firefox förstår kommandona som överförs i form av Marionette-protokollet och kör dem.
Fördelen med att använda Gecko Driver
Selenium Webdriver version 2.53 är inte kompatibel med Mozilla Firefox version 47.0+. Firefox-drivrutinen som användes i tidigare versioner av Mozilla Firefox kommer att avbrytas och endast GeckoDriver-implementeringen skulle användas. Därför tvingas testare att använda GeckoDriver om de vill köra automatiserade tester på Mozilla Firefox version 47.0+. Men den stora frågan - vad är fördelen?
Den största fördelen med att använda GeckoDriver i motsats till standard Firefox-drivrutinen är kompatibilitet . GeckoDriver använder W3C WebDriver-protokoll för att kommunicera med Selen. W3C är en allmänt definierad standard för webbdrivrutiner. Det betyder att Selenium Developers (personer som kodar Selenium base) inte behöver skapa en ny version av Web Driver för varje webbläsarversion. Samma webbdrivrutin kan användas för flera webbläsarversioner. Därför är GeckoDriver att föredra jämfört med den tidigare implementeringen av Firefox-drivrutinen.
Ladda ner och installera Gecko Driver:
Gecko Driver finns som en körbar fil som kan laddas ner till systemet. Följande är listan över steg för att ladda ner gecko-drivrutin.
Steg 1) På den här sidan https://github.com/mozilla/geckodriver/releases, välj lämplig version för nedladdning av GeckoDriver baserat på ditt operativsystem
Steg 2) När nedladdningen av ZIP-filen är klar extraherar du innehållet i ZIP-filen till en filmapp
Steg 3) Notera platsen där du extraherade drivrutinen. Plats kommer att användas senare för att starta föraren.
Sätt att initiera GeckoDriver:
Det finns tre olika sätt att initiera GeckoDriver.
1. Använda DesiredCapabilities:
Ställ först in systemegenskapen för Gecko Driver.
Syntax:
System.setProperty ("webdriver.gecko.driver", "Sökväg till geckdriver.exe-fil");
Exempel:
System.setProperty ("webdriver.gecko.driver", "D: \\ Nedladdningar \\ GeckoDriver.exe");
Ställ sedan in önskade funktioner.
Önskade funktioner hjälper Selenium att förstå webbläsarens namn, version och operativsystem för att utföra de automatiska testerna. Nedan följer koden för att ställa in gecko-drivrutinen med DesiredCapabilities-klassen.
DesiredCapabilities-funktioner = DesiredCapabilities.firefox ();skills.setCapability ("marionette", true);
Här är den fullständiga koden
System.setProperty ("webdriver.gecko.driver", driverPath);DesiredCapabilities-funktioner = DesiredCapabilities.firefox ();skills.setCapability ("marionette", true);drivrutin = ny FirefoxDriver (funktioner);
2. Använda marionettegenskap:
Gecko-drivrutinen kan också initieras med hjälp av marionette-egenskapen enligt nedan
System.setProperty ("webdriver.gecko.driver", "D: \\ Nedladdningar \\ GeckoDriver.exe");
Om gecko-drivrutinen initialiseras med ovanstående metod krävs inte kod för önskade funktioner .
3. Använda FirefoxOptions:
Mozilla Firefox version 47+ har marionettdrivrutin som ett äldre system. Genom att utnyttja detta kan marionettdrivrutinen kallas med Firefox-alternativ enligt nedan
FirefoxOptions-alternativ = nya FirefoxOptions ();options.setLegacy (true);
Kod för att starta Firefox med Gecko-drivrutin:
paket com.guru99.demo;importera org.junit.After;importera org.junit.Before;importera org.junit.Test;importera org.openqa.selenium.WebDriver;importera org.openqa.selenium.firefox.FirefoxDriver;importera org.openqa.selenium.remote.DesiredCapabilities;offentlig klass GeckoDriverDemo {Sträng driverPath = "D: \\ Guru99Demo \\ GeckoDriver.exe";offentlig WebDriver-drivrutin;@Innanoffentligt ogiltigt startBrowser () {System.setProperty ("webdriver.gecko.driver", driverPath);DesiredCapabilities-funktioner = DesiredCapabilities.firefox ();skills.setCapability ("marionette", true);drivrutin = ny FirefoxDriver (funktioner);}@Testapublic void navigateToUrl () {driver.get ("http://demo.guru99.com/selenium/guru99home/");}@Efterpublic void endTest () {driver.quit ();}}
Kodförklaring:
@Before-metoden:
Inledningsvis måste vi ställa in systemegenskapen för gecko-drivrutinen till nedladdningsplatsen för geckdriver.exe. Vi måste ställa in marionetteegenskapen till true för att Selen ska använda Marionette-protokollet för att kommunicera med Gecko Driver. Slutligen måste vi starta Firefox-webbläsarinstansen med hjälp av objektet för önskade funktioner.
Nedanstående uttalanden hjälper till att uppnå ovanstående uppgift.
System.setProperty ("webdriver.gecko.driver", driverPath);DesiredCapabilities-funktioner = DesiredCapabilities.firefox ();skills.setCapability ("marionette", true);drivrutin = ny FirefoxDriver (funktioner);
@Testmetod:
Vi navigerar till användardefinierad URL med den inbyggda "get" -metoden från Selenium-webbdrivrutinen. Nedanstående uttalande hjälper till att uppnå detsamma.
driver.get ("http://demo.guru99.com/selenium/guru99home/");
@Efter metoden:
Slutligen stänger vi webbläsarinstansen med hjälp av avsluta-metoden.
driver.quit ();
Ändra ett skript för icke-Gecko till Gecko:
Icke-gecko-drivrutinsskript som användes före Selenium 3 var enkelt. Vi måste skapa en instans av Firefox-drivrutinen och använda instansvariabeln.
@Innanoffentligt ogiltigt startBrowser () {drivrutin = ny FirefoxDriver ();}
För att konvertera till gecko måste du helt enkelt lägga till en kodrad
@Innanoffentligt ogiltigt startBrowser () {System.setProperty ("webdriver.gecko.driver", "D: \\ Nedladdningar \\ GeckoDriver.exe");drivrutin = ny FirefoxDriver ();}
Vanliga undantag inträffade när du använder Gecko Driver:
Nedan följer en lista över vanliga undantag som uppstår när du använder Gecko Driver och med upplösning.
1. Sökvägen till drivrutin körbar måste ställas in av webdriver.gecko.driver systemegenskap:
Detta undantag inträffar när användaren försöker starta Firefox-drivrutinen utan att ange systemegenskapen för geckodrivrutinen. Detta görs vanligtvis av nybörjare till Selen som inte känner till de förändringar som gjorts från Selen 3 till Selen tidigare versioner.
Upplösningen för ovanstående undantag är att ställa in systemegenskapen för gecko-drivrutinen med platsen för filen geckodriver.exe enligt nedan
System.setProperty ("webdriver.gecko.driver", "D: \\ Nedladdningar \\ geckodriver.exe");
Observera att du måste ställa in egenskapen för gecko-drivrutinen innan du skapar en instans av Mozilla Firefox-drivrutin.
2. Undantag för Firefox ej ansluten:
org.openqa.selenium.firefox.NotConnectedException: Det går inte att ansluta till värd 127.0.0.1 på port 7055 efter 45000 ms.
Detta undantag inträffar vanligtvis när Firefox-versionen har uppgraderats till den senaste versionen. Upplösningen för detta undantag är att uppdatera selenburkfilen och geckodrivrutinen till den senaste versionen och använda densamma.
3. Undantag för session inte skapad:
org.openqa.selenium.SessionNotCreatedException: Det går inte att skapa en ny fjärrsession.
Detta undantag beror på kompatibilitetsproblem mellan Selenium och Gecko-drivrutinen. Gecko-drivrutinen fungerar med Firefox version 47 eller senare. Det kan lösas genom att uppdatera Firefox-versionen till 47 eller högre.
4. Anslutning vägrat undantag:
WebDriver Undantag: Anslutning nekad
Detta undantag är meddelandet som genereras när webbdrivrutinen inte kan upprätta en anslutning till Firefox. Det kan lösas med någon av följande tekniker.
- Använd metoden driver.quit () för att förstöra tidigare instanser av webbdrivrutinen
- Rengör webbläsarens cache innan du kör dina automatiska tester
- Rengör projektets arbetsyta inom Eclipse IDE
- Använd alltid den senaste versionen av selengeckodrivrutinen och den senaste versionen av Firefox-webbläsaren