Gecko (Marionette) Treiber Selenium: Herunterladen, Installieren, Verwenden mit Firefox

Inhaltsverzeichnis:

Anonim

Was ist Gecko Driver?

Der Begriff Gecko steht für eine Webbrowser-Engine, die im Mozilla Firefox-Browser integriert ist. Der Gecko-Treiber fungiert als Proxy zwischen Web-Treiber-fähigen Clients (Eclipse, Netbeans usw.) und dem Mozilla Firefox-Browser. Kurz gesagt, der Gecko-Treiber fungiert als Verbindung zwischen den Selenium Web Driver-Tests und dem Mozilla Firefox-Browser.

Vor Selenium 3 war der Mozilla Firefox-Browser der Standardbrowser für Selenium. Nach Selenium 3 müssen Tester das Skript initialisieren, um Firefox explizit mit GeckoDriver verwenden zu können. Selenium verwendet das W3C-Webdriver-Protokoll, um Anforderungen an GeckoDriver zu senden, die diese in ein Protokoll namens Marionette übersetzen. Firefox versteht die in Form des Marionettenprotokolls übertragenen Befehle und führt sie aus.

Vorteil der Verwendung des Gecko-Treibers

Selenium Webdriver Version 2.53 ist nicht mit Mozilla Firefox Version 47.0+ kompatibel. Der in früheren Versionen von Mozilla Firefox verwendete Firefox-Treiber wird eingestellt, und es wird nur die GeckoDriver-Implementierung verwendet. Daher müssen Tester GeckoDriver verwenden, wenn sie automatisierte Tests mit Mozilla Firefox Version 47.0+ ausführen möchten. Aber die große Frage - was ist der Vorteil?

Der Hauptvorteil der Verwendung von GeckoDriver gegenüber dem Standard-Firefox-Treiber ist die Kompatibilität . GeckoDriver verwendet das W3C WebDriver-Protokoll , um mit Selenium zu kommunizieren. W3C ist ein universell definierter Standard für Web Driver. Dies bedeutet, dass Selenium-Entwickler (Personen, die Selenium-Basis codieren) nicht für jede Browserversion eine neue Version des Web-Treibers erstellen müssen. Der gleiche Webtreiber kann für mehrere Browserversionen verwendet werden. Daher wird GeckoDriver gegenüber der früheren Implementierung des Firefox-Treibers bevorzugt.

Laden Sie den Gecko-Treiber herunter und installieren Sie ihn:

Der Gecko-Treiber ist als ausführbare Datei verfügbar, die auf das System heruntergeladen werden kann. Im Folgenden finden Sie eine Liste der Schritte zum Herunterladen des Geckotreibers.

Schritt 1) Wählen Sie auf dieser Seite https://github.com/mozilla/geckodriver/releases die geeignete Version für den GeckoDriver-Download basierend auf Ihrem Betriebssystem aus

Schritt 2) Wenn der Download der ZIP-Datei abgeschlossen ist, extrahieren Sie den Inhalt der ZIP-Datei in einen Dateiordner

Schritt 3) Notieren Sie sich den Speicherort, an dem Sie den Treiber extrahiert haben. Der Speicherort wird später verwendet, um den Treiber zu instanziieren.

Möglichkeiten zum Initialisieren von GeckoDriver:

Es gibt drei verschiedene Möglichkeiten, GeckoDriver zu initialisieren.

1. Verwenden von DesiredCapabilities:

Legen Sie zunächst die Systemeigenschaft für den Gecko-Treiber fest.

Syntax:

System.setProperty ("webdriver.gecko.driver", "Pfad zur Datei geckdriver.exe");

Beispiel:

System.setProperty ("webdriver.gecko.driver", "D: \\ Downloads \\ GeckoDriver.exe");

Stellen Sie als Nächstes die gewünschten Funktionen ein.

Gewünschte Funktionen helfen Selenium, den Namen, die Version und das Betriebssystem des Browsers zu verstehen, um die automatisierten Tests auszuführen. Unten finden Sie den Code zum Festlegen des Geckotreibers mithilfe der DesiredCapabilities-Klasse.

DesiredCapabilities functions = DesiredCapabilities.firefox ();Capabilities.setCapability ("Marionette", true);

Hier ist der vollständige Code

System.setProperty ("webdriver.gecko.driver", driverPath);DesiredCapabilities functions = DesiredCapabilities.firefox ();Capabilities.setCapability ("Marionette", true);Treiber = neuer FirefoxDriver (Funktionen);

2. Verwenden der Marionetteneigenschaft:

Der Gecko-Treiber kann auch mithilfe der Marionetteneigenschaft wie folgt initialisiert werden

System.setProperty ("webdriver.gecko.driver", "D: \\ Downloads \\ GeckoDriver.exe");

Wenn der Geckotreiber mit der oben beschriebenen Methode initialisiert wird, ist kein Code für die gewünschten Funktionen erforderlich.

3. Verwenden von FirefoxOptions:

Mozilla Firefox Version 47+ verfügt über einen Marionettentreiber als Legacy-System. Aus diesem Grund kann der Marionettentreiber mithilfe der folgenden Firefox-Optionen aufgerufen werden

FirefoxOptions options = new FirefoxOptions ();options.setLegacy (true);

Code zum Starten von Firefox mit dem Gecko-Treiber:

Paket com.guru99.demo;import org.junit.After;import org.junit.Before;import org.junit.Test;import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;import org.openqa.selenium.remote.DesiredCapabilities;öffentliche Klasse GeckoDriverDemo {String driverPath = "D: \\ Guru99Demo \\ GeckoDriver.exe";öffentlicher WebDriver-Treiber;@Vorpublic void startBrowser () {System.setProperty ("webdriver.gecko.driver", driverPath);DesiredCapabilities functions = DesiredCapabilities.firefox ();Capabilities.setCapability ("Marionette", true);Treiber = neuer FirefoxDriver (Funktionen);}}@Prüfungpublic void navigToUrl () {driver.get ("http://demo.guru99.com/selenium/guru99home/");}}@Nach dempublic void endTest () {driver.quit ();}}}}

Code Erläuterung:

@Vor der Methode:

Zunächst müssen wir die Systemeigenschaft für den Geckotreiber auf den Download-Speicherort der Datei geckdriver.exe festlegen. Wir müssen die Marionetteneigenschaft auf true setzen, damit Selenium das Marionettenprotokoll für die Kommunikation mit dem Gecko-Treiber verwendet. Schließlich müssen wir die Firefox-Browserinstanz mit dem Objekt für die gewünschten Funktionen starten.

Die folgenden Aussagen helfen, die obige Aufgabe zu erreichen.

System.setProperty ("webdriver.gecko.driver", driverPath);DesiredCapabilities functions = DesiredCapabilities.firefox ();Capabilities.setCapability ("Marionette", true);Treiber = neuer FirefoxDriver (Funktionen);

@Testmethode:

Wir navigieren zu einer benutzerdefinierten URL mit der integrierten "get" -Methode, die vom Selenium-Webtreiber bereitgestellt wird. Die folgende Aussage hilft dabei, dasselbe zu erreichen.

driver.get ("http://demo.guru99.com/selenium/guru99home/");

@Nach Methode:

Schließlich schließen wir die Browserinstanz mit der Methode quit.

driver.quit ();

Ändern Sie ein Skript für Nicht-Gecko in Gecko:

Das vor Selenium 3 verwendete Nicht-Gecko-Treiberskript war unkompliziert. Wir müssen eine Instanz des Firefox-Treibers erstellen und die Instanzvariable verwenden.

@Vorpublic void startBrowser () {Treiber = neuer FirefoxDriver ();}}

Um in Gecko zu konvertieren, müssen Sie einfach eine Codezeile hinzufügen

@Vorpublic void startBrowser () {System.setProperty ("webdriver.gecko.driver", "D: \\ Downloads \\ GeckoDriver.exe");Treiber = neuer FirefoxDriver ();}}

Bei der Verwendung des Gecko-Treibers traten häufig Ausnahmen auf:

Im Folgenden finden Sie eine Liste der häufigsten Ausnahmen, die bei Verwendung des Gecko-Treibers und mit Auflösung auftreten.

1. Der Pfad zur ausführbaren Treiberdatei muss von der Systemeigenschaft webdriver.gecko.driver festgelegt werden:

Diese Ausnahme tritt auf, wenn der Benutzer versucht, den Firefox-Treiber zu instanziieren, ohne die Systemeigenschaft für den Gecko-Treiber festzulegen. Dies wird normalerweise von Anfängern von Selen durchgeführt, denen die Änderungen von Selen 3 zu früheren Selen-Versionen nicht bekannt sind.

Die Lösung für die obige Ausnahme besteht darin, die Systemeigenschaft für den Geckotreiber mit dem Speicherort der Datei geckodriver.exe wie folgt festzulegen

System.setProperty ("webdriver.gecko.driver", "D: \\ Downloads \\ geckodriver.exe");

Bitte beachten Sie, dass Sie die Eigenschaft des Geckotreibers festlegen müssen, bevor Sie eine Instanz des Mozilla Firefox-Treibers erstellen.

2. Firefox nicht verbunden Ausnahme:

org.openqa.selenium.firefox.NotConnectedException: Nach 45000 ms kann keine Verbindung zum Host 127.0.0.1 auf Port 7055 hergestellt werden.

Diese Ausnahme tritt normalerweise auf, wenn die Firefox-Version auf die neueste Version aktualisiert wurde. Die Lösung für diese Ausnahme besteht darin, die Selenium-JAR-Datei und den Gecko-Treiber auf die neueste Version zu aktualisieren und diese zu verwenden.

3. Sitzung nicht erstellt Ausnahme:

org.openqa.selenium.SessionNotCreatedException: Neue Remote-Sitzung kann nicht erstellt werden.

Diese Ausnahme tritt aufgrund von Kompatibilitätsproblemen zwischen Selenium und Gecko-Treiber auf. Der Gecko-Treiber funktioniert mit Firefox Version 47 oder höher. Sie können das Problem beheben, indem Sie die Firefox-Version auf 47 oder höher aktualisieren.

4. Verbindung verweigert Ausnahme:

WebDriver-Ausnahme: Verbindung abgelehnt

Diese Ausnahme ist die Nachricht, die generiert wird, wenn der Webtreiber keine Verbindung zu Firefox herstellen kann. Es kann mit einer der folgenden Techniken gelöst werden.

  • Verwenden Sie die Methode driver.quit (), um frühere Instanzen des Webtreibers zu zerstören
  • Bereinigen Sie den Browser-Cache, bevor Sie Ihre automatisierten Tests ausführen
  • Bereinigen Sie den Projektarbeitsbereich in der Eclipse-IDE
  • Verwenden Sie immer die neueste Version des Selen-Gecko-Treibers und die neueste Version des Firefox-Browsers