Wat is Gecko-stuurprogramma?
De term Gecko staat voor een webbrowser-engine die is ingebouwd in de Mozilla Firefox-browser. Gecko-stuurprogramma fungeert als een proxy tussen clients met Web Driver (Eclipse, Netbeans, etc.) en de Mozilla Firefox-browser. Kortom, Gecko-stuurprogramma fungeert als een link tussen Selenium Web Driver-tests en de Mozilla Firefox-browser.
Vóór Selenium 3 was de Mozilla Firefox-browser de standaardbrowser voor Selenium. Na Selenium 3 moeten testers het script initialiseren om Firefox expliciet met GeckoDriver te gebruiken. Selenium gebruikt het W3C Webdriver-protocol om verzoeken naar GeckoDriver te sturen, die ze vertaalt in een protocol met de naam Marionette. Firefox begrijpt de opdrachten die worden verzonden in de vorm van het Marionette-protocol en voert ze uit.
Voordeel van het gebruik van Gecko Driver
Selenium Webdriver versie 2.53 is niet compatibel met Mozilla Firefox versie 47.0+. Het Firefox-stuurprogramma dat in eerdere versies van Mozilla Firefox werd gebruikt, wordt stopgezet en alleen de GeckoDriver-implementatie wordt gebruikt. Daarom worden testers gedwongen om GeckoDriver te gebruiken als ze geautomatiseerde tests willen uitvoeren op Mozilla Firefox versie 47.0+. Maar de grote vraag - wat is het voordeel?
Het grote voordeel van het gebruik van GeckoDriver in tegenstelling tot de standaard Firefox-driver is compatibiliteit . GeckoDriver gebruikt het W3C WebDriver-protocol om te communiceren met Selenium. W3C is een universeel gedefinieerde standaard voor webstuurprogramma's. Dit betekent dat Selenium-ontwikkelaars (mensen die Selenium-base coderen) niet voor elke browserversie een nieuwe versie van Web Driver hoeven te maken. Hetzelfde webstuurprogramma kan voor meerdere browserversies worden gebruikt. Daarom heeft GeckoDriver de voorkeur in vergelijking met de eerdere implementatie van Firefox-stuurprogramma.
Download en installeer Gecko Driver:
Gecko Driver is beschikbaar als een uitvoerbaar bestand dat op het systeem kan worden gedownload. Hieronder volgt een lijst met stappen om het gekko-stuurprogramma te downloaden.
Stap 1) Selecteer op deze pagina https://github.com/mozilla/geckodriver/releases de juiste versie voor het downloaden van GeckoDriver op basis van uw besturingssysteem
Stap 2) Zodra het downloaden van het ZIP-bestand is voltooid, extraheert u de inhoud van het ZIP-bestand naar een bestandsmap
Stap 3) Noteer de locatie waar u het stuurprogramma heeft uitgepakt. De locatie wordt later gebruikt om de bestuurder te instantiëren.
Manieren om GeckoDriver te initialiseren:
Er zijn drie verschillende manieren om GeckoDriver te initialiseren.
1. Gebruik van gewenste mogelijkheden:
Stel eerst de systeemeigenschap in voor Gecko Driver.
Syntaxis:
System.setProperty ("webdriver.gecko.driver", "Pad naar bestand geckdriver.exe");
Voorbeeld:
System.setProperty ("webdriver.gecko.driver", "D: \\ Downloads \\ GeckoDriver.exe");
Stel vervolgens de gewenste mogelijkheden in.
Gewenste mogelijkheden helpen Selenium om de browsernaam, versie en besturingssysteem te begrijpen om de geautomatiseerde tests uit te voeren. Hieronder staat de code om de gekko-driver in te stellen met behulp van de DesiredCapabilities-klasse.
DesiredCapabilities-mogelijkheden = DesiredCapabilities.firefox ();capaciteiten.setCapability ("marionet", true);
Hier is de volledige code
System.setProperty ("webdriver.gecko.driver", driverPath);DesiredCapabilities-mogelijkheden = DesiredCapabilities.firefox ();capaciteiten.setCapability ("marionet", true);driver = nieuwe FirefoxDriver (mogelijkheden);
2. Met behulp van marionetteigenschap:
Gecko-stuurprogramma kan ook worden geïnitialiseerd met de eigenschap marionet, zoals hieronder
System.setProperty ("webdriver.gecko.driver", "D: \\ Downloads \\ GeckoDriver.exe");
Als het gekko-stuurprogramma wordt geïnitialiseerd met behulp van de bovenstaande methode, is code voor de gewenste mogelijkheden niet vereist.
3. FirefoxOptions gebruiken:
Mozilla Firefox versie 47+ heeft een marionetstuurprogramma als verouderd systeem. Door hiervan te profiteren, kan het marionetstuurprogramma worden aangeroepen met behulp van Firefox-opties, zoals hieronder
FirefoxOptions-opties = nieuwe FirefoxOptions ();options.setLegacy (true);
Code voor het starten van firefox met Gecko-stuurprogramma:
pakket com.guru99.demo;importeer org.junit.After;importeer org.junit.Before;importeer org.junit.Test;importeer org.openqa.selenium.WebDriver;importeer org.openqa.selenium.firefox.FirefoxDriver;importeer org.openqa.selenium.remote.DesiredCapabilities;openbare klasse GeckoDriverDemo {String driverPath = "D: \\ Guru99Demo \\ GeckoDriver.exe";openbare WebDriver-driver;@Voordatopenbare ongeldige startBrowser () {System.setProperty ("webdriver.gecko.driver", driverPath);DesiredCapabilities-mogelijkheden = DesiredCapabilities.firefox ();capaciteiten.setCapability ("marionet", true);driver = nieuwe FirefoxDriver (mogelijkheden);@Testopenbare leegte navigatieToUrl () {driver.get ("http://demo.guru99.com/selenium/guru99home/");@Naopenbare ongeldige endTest () {driver.quit ();
Code Verklaring:
@Before methode:
In eerste instantie moeten we de systeemeigenschap voor gekko-stuurprogramma instellen op de downloadlocatie van het bestand geckdriver.exe. We moeten de eigenschap marionet op true instellen zodat Selenium het Marionette-protocol gebruikt om te communiceren met Gecko Driver. Ten slotte moeten we de Firefox-browserinstantie starten met behulp van het object voor gewenste mogelijkheden.
De onderstaande verklaringen helpen om de bovenstaande taak te bereiken.
System.setProperty ("webdriver.gecko.driver", driverPath);DesiredCapabilities-mogelijkheden = DesiredCapabilities.firefox ();capaciteiten.setCapability ("marionet", true);driver = nieuwe FirefoxDriver (mogelijkheden);
@Test methode:
We navigeren naar een door de gebruiker gespecificeerde URL met behulp van de ingebouwde "get" -methode die wordt geleverd door de Selenium-webdriver. De onderstaande verklaring helpt om hetzelfde te bereiken.
driver.get ("http://demo.guru99.com/selenium/guru99home/");
@Na methode:
Ten slotte sluiten we de browserinstantie met behulp van de quit-methode.
driver.quit ();
Wijzig een script voor niet-Gecko naar Gecko:
Het niet-gekko-stuurprogramma dat vóór Selenium 3 werd gebruikt, was eenvoudig. We moeten een instantie van Firefox-stuurprogramma maken en de instantievariabele gebruiken.
@Voordatopenbare ongeldige startBrowser () {driver = nieuwe FirefoxDriver ();
Om naar gekko te converteren, hoef je alleen maar één regel code toe te voegen
@Voordatopenbare ongeldige startBrowser () {System.setProperty ("webdriver.gecko.driver", "D: \\ Downloads \\ GeckoDriver.exe");driver = nieuwe FirefoxDriver ();
Veelvoorkomende uitzonderingen deden zich voor tijdens het gebruik van Gecko Driver:
Hieronder volgt een lijst met veelvoorkomende uitzonderingen die optreden tijdens het gebruik van Gecko Driver en met resolutie.
1. Het pad naar het uitvoerbare bestand van het stuurprogramma moet worden ingesteld door de systeemeigenschap webdriver.gecko.driver:
Deze uitzondering treedt op wanneer de gebruiker probeert Firefox-stuurprogramma te starten zonder de systeemeigenschap voor gekko-stuurprogramma in te stellen. Dit wordt meestal gedaan door beginners tot Selenium die niet op de hoogte zijn van de wijzigingen die zijn aangebracht van Selenium 3 naar eerdere versies van Selenium.
De oplossing voor de bovenstaande uitzondering is om de systeemeigenschap voor gekko-stuurprogramma in te stellen met de locatie van het bestand geckodriver.exe, zoals hieronder
System.setProperty ("webdriver.gecko.driver", "D: \\ Downloads \\ geckodriver.exe");
Houd er rekening mee dat u de eigenschap van de gekko-driver moet instellen voordat u een exemplaar van de Mozilla Firefox-driver maakt.
2. Firefox niet verbonden uitzondering:
org.openqa.selenium.firefox.NotConnectedException: kan geen verbinding maken met host 127.0.0.1 op poort 7055 na 45000 ms.
Deze uitzondering treedt meestal op wanneer de Firefox-versie is geüpgraded naar de nieuwste versie. De oplossing voor deze uitzondering is om het selenium jar-bestand en het gekko-stuurprogramma bij te werken naar de nieuwste versie en dezelfde te gebruiken.
3. Uitzondering sessie niet aangemaakt:
org.openqa.selenium.SessionNotCreatedException: kan geen nieuwe externe sessie maken.
Deze uitzondering treedt op vanwege compatibiliteitsproblemen tussen Selenium en Gecko-stuurprogramma. Gecko-stuurprogramma werkt met Firefox-versie 47 of hoger. Het kan worden opgelost door Firefox-versie bij te werken naar 47 of hoger.
4. Verbinding geweigerd uitzondering:
Uitzondering WebDriver: verbinding geweigerd
Deze uitzondering is het bericht dat wordt gegenereerd wanneer het webstuurprogramma geen verbinding kan maken met Firefox. Het kan worden opgelost met een van de volgende technieken.
- Gebruik de methode driver.quit () om eerdere exemplaren van de webdriver te vernietigen
- Maak de browsercache schoon voordat u uw geautomatiseerde tests uitvoert
- Reinig de projectwerkruimte in Eclipse IDE
- Gebruik altijd de nieuwste versie van het seleniumgekko-stuurprogramma en de meest recente versie van de Firefox-browser