geckodriver selenium tutorial
GeckoDriver Selenium Tutorial: Erfahren Sie, wie Sie den Gecko (Marionette) Treiber in Selenium verwenden
Um zu verstehen, was GeckoDriver ist, müssen wir zunächst etwas über Gecko und die Webbrowser-Engine wissen. Dieses Tutorial behandelt fast alle Funktionen von GeckoDriver und gibt Ihnen einen vollständigen Überblick darüber.
Lassen Sie uns zunächst wissen, was Gecko ist und was eine Webbrowser-Engine ist.
Was du lernen wirst:
- Was ist Gecko?
- Was ist eine Webbrowser-Engine?
- Was ist GeckoDriver?
- Warum braucht Selen GeckoDriver?
- Wie verwende ich GeckoDriver in Selenium Project?
- GeckoDriver und TestNG
- Schritte zum Hinzufügen eines Pfads zur PATH-Umgebungsvariablen des Systems
- Probleme ohne Gecko-Treiber
- Zusätzliche Informationen zu GeckoDriver
- Fazit
- Literatur-Empfehlungen
Was ist Gecko?
Gecko ist eine Webbrowser-Engine. Es gibt mehrere Anwendungen, die Gecko erfordern. Insbesondere die Anwendungen, die von der Mozilla Foundation und der Mozilla Corporation entwickelt werden. Gecko ist auch ein Bedarf für viele Open-Source-Softwareprojekte. Gecko ist in C ++ und JavaScript geschrieben.
Neueste Versionen sind auch in Rust geschrieben. Gecko ist eine kostenlose und Open-Source-Webbrowser-Engine.
Was ist eine Webbrowser-Engine?
Die Webbrowser-Engine ist nichts anderes als ein Softwareprogramm. Die Hauptfunktion dieses Programms besteht darin, den Inhalt (wie HTML, XML, Bilder) zu sammeln und die Informationen (wie CSS) zu formatieren und diesen formatierten Inhalt auf dem Bildschirm anzuzeigen. Die Webbrowser-Engine wird auch als Layout-Engine oder Rendering-Engine bezeichnet.
Anwendungen wie Webbrowser, E-Mail-Clients, E-Book-Reader, Online-Hilfesysteme usw. müssen Webinhalte anzeigen. Zum Anzeigen des Webinhalts ist die Webbrowser-Engine erforderlich, die Teil all dieser Anwendungen ist. Für jeden Webbrowser gibt es unterschiedliche Webbrowser-Engines.
Die folgende Tabelle zeigt Webbrowser und welche Webbrowser-Engines sie verwenden.
Gecko läuft auf folgendem Betriebssystem ohne Emulation:
- Windows
- Mac OS
- Linux
- BSD
- Unix
Es kann nicht unter einem Symbian-Betriebssystem ausgeführt werden.
Was ist GeckoDriver?
GeckoDriver ist ein Verbindungslink zum Firefox-Browser für Sie Skripte in Selen . GeckoDriver ist ein Proxy, der die Kommunikation mit den Gecko-basierten Browsern (z. B. Firefox) erleichtert, für die er eine HTTP-API bereitstellt.
Warum braucht Selen GeckoDriver?
Firefox (Version 47 und höher) hat einige Änderungen daran vorgenommen. Aus Sicherheitsgründen kann kein Treiber eines Drittanbieters direkt mit den Browsern interagieren. Daher können wir Selenium2 nicht mit den neuesten Versionen von Firefox verwenden. Also brauchen wir Selenium3.
Selenium3 hat Marionettentreiber. Selenium3 kann über einen Proxy, der nichts anderes als der GeckoDriver ist, direkt mit dem Firefox-Browser interagieren.
Wie verwende ich GeckoDriver in Selenium Project?
- Nehmen wir an, Sie haben die neueste Version von Selenium WebDriver und der Firefox-Browser.
- Laden Sie dann den GeckoDriver von herunter Hier . Wählen Sie später die für Ihren Computer geeignete Version.
- Dateien extrahieren aus dem komprimierten Ordner
- Fügen Sie die Referenzen von Selenium3-Bibliotheken in Ihr Projekt ein. Klicken Sie mit der rechten Maustaste auf das Projekt => Erstellungspfad => Erstellungspfad konfigurieren => Bibliotheken => Externe Jars hinzufügen.
- Wählen Lib-Ordner => Klicken Sie auf Clt + A => Klicken Sie auf Öffnen .
- Nach dir Klicken Sie auf Öffnen sehen Sie das folgende Fenster:
- Klicken Sie dann auf OK.
- Schreiben wir nun unseren Code und verwenden die Systemeigenschaft, um den GeckoDriver-Pfad anzugeben.
- Fügen Sie die folgende Zeile in Ihren Code ein:
System.setProperty(“webdriver.gecko.driver”,”Path of the GeckoDriver file”).
** ( So kopieren Sie die Adresse der extrahierten Datei. - (Drücken Sie die Umschalttaste auf der Tastatur und klicken Sie mit der rechten Maustaste auf die Datei. Sie erhalten eine Option. Dann 'Adresse der Datei kopieren'.))
** ( Stellen Sie in diesem kopierten Pfad sicher, dass ein doppelter Backslash vorhanden ist, da sonst der Code einen Syntaxfehler aufweist.)
Nehmen wir ein Beispiel
Beispiel
Hier ist nur ein einfaches Skript, in dem wir die Google-Webseite in einem Firefox-Browser öffnen und den Titel der Webseite überprüfen.
Code1::
import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; publicclass First_Class { publicstaticvoid main(String() args) { System.setProperty('webdriver.gecko.driver','E:\GekoDriver\geckodriver-v0.15.0-win64\geckodriver.exe'); WebDriver driver=new FirefoxDriver(); driver.get('https://www.google.com/'); driver.manage().window().maximize(); String appTitle=driver.getTitle(); String expTitle='Google'; if (appTitle.equals (expTitle)){ System.out.println('Verification Successfull'); } else{ System.out.println('Verification Failed'); } driver.close(); System.exit(0); } }
Den Code verstehen
# 1) import org.openqa.selenium.WebDriver- Hier importieren wir alle Verweise auf die WebDriver-Oberfläche. Später wird diese WebDriver-Oberfläche benötigt, um einen neuen Browser zu instanziieren.
# 2) importiere org.openqa.selenium.firefox.FirefoxDriver- Hier importieren wir alle Verweise auf die FirefoxDriver-Klasse.
#3) setProperty (String key, String value) - Hier legen wir die Systemeigenschaft fest, indem wir den Namen der Eigenschaft angeben, die als Schlüssel bezeichnet wird, und ihren Pfad, der als Wert bezeichnet wird.
Schlüssel -Name der Systemeigenschaft, d.h. webdriver.gecko.driver .
Wert - Adresse der Exe-Datei des Gecko-Fahrers.
# 4) WebDriver-Treiber = neuer FirefoxDriver () - In dieser Codezeile erstellen wir die Referenzvariable 'Treiber' des WebDriver und diese Referenzvariable wird mit der FirefoxDriver-Klasse initiiert. Ein Firefox-Profil ohne Erweiterungen und Plugins wird mit der Firefox-Instanz gestartet.
# 5) get ('URL') - Mit dieser Get-Methode können wir die angegebene URL im Browser öffnen. Diese Get-Methode wird unter Verwendung der Referenzvariablen des WebDrivers, d. H. Des Treibers, aufgerufen. Die Zeichenfolge wird an die Get-Methode übergeben. Dies bedeutet, dass unsere Anwendungs-URL an diese Get-Methode übergeben wird.
# 6) verwalten (). Fenster (). Maximieren () - Mit dieser Codezeile maximieren wir das Browserfenster. Sobald der Browser die angegebene URL öffnet, wird diese über diese Zeile maximiert.
# 7) getTitle () - Mit dieser Codezeile können wir den Titel der Webseite finden. Diese Methode wird auch mit der Referenzvariablen 'Treiber' des WebDrivers aufgerufen. Wir speichern diesen Titel in der String-Variablen 'appTitle'.
# 8) Vergleich– Hier vergleichen wir den AppTitle (der durchkommt driver.getTitle () Methode) und die expTitle (das ist 'Google') mit der If-Anweisung. Es ist nur eine einfache If-else-Anweisung. Wenn die Bedingung 'Wenn' erfüllt ist, drucken wir die Meldung 'Überprüfung erfolgreich', andernfalls wird die Meldung 'Überprüfung fehlgeschlagen' gedruckt.
if (appTitle.equals (expTitle)) { System.out.println ('Verification Successful'); } else { System.out.println('Verification Failed'); }
# 9) driver.close () - Diese Codezeile schließt den Browser. Diese Zeile schließt nur das aktuelle Fenster.
# 10) System.exit (0) - Diese Codezeilenmethode wird verwendet, um die Ausführung der Java Virtual Machine zu beenden. Es wird daher empfohlen, alle geöffneten Fenster oder Dateien vor dieser Zeile zu schließen.
GeckoDriver und TestNG
Es gibt keinen großen Unterschied im Code, aber hier füge ich einen Code nur als Referenz hinzu.
BEISPIEL:
Kommen wir zum Beispiel. Unser Beispiel ist das Öffnen der Google.com-Webseite, das Abrufen des Titels und das Drucken.
Code2:
import org.testng.annotations.Test; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; publicclass TstNG { @Test publicvoid f() { System.setProperty('webdriver.gecko.driver','E:\GekoDriver\geckodriver-v0.15.0-win64\geckodriver.exe'); WebDriver driver=new FirefoxDriver(); driver.get('https://www.google.com/'); driver.manage().window().maximize(); String appurl=driver.getTitle(); System.out.println(appurl); driver.close(); // System.exit(0); } }
Punkte, die Sie beim Schreiben des TestNG-Codes beachten sollten:
# 1) Verwenden Sie die System.setProperty-Methode (String key, String value) in der Funktion f () wie im vorherigen Beispiel. In diesem Beispiel haben wir es in der Hauptfunktion geschrieben. In TestNG gibt es jedoch keine main () - Funktionen. Wenn Sie es außerhalb der Funktion schreiben, wird ein Syntaxfehler angezeigt.
#zwei) Das zweitwichtigste, an das Sie sich erinnern sollten, ist System.exit (0). Diese Codezeile muss nicht in Ihr TestNG-Skript eingefügt werden. Es gibt einen Grund dafür: Nach dem Ausführen des TestNG-Skripts wird ein Ausgabeordner generiert, in dem Sie die generierten Berichte und Ergebnisse anzeigen können. Wenn Sie System.exit (0) in Ihr Skript einfügen, wird dieser Ordner (Ausgabeordner) nicht abgerufen generiert und Sie können die Berichte nicht anzeigen.
Schritte zum Hinzufügen eines Pfads zur PATH-Umgebungsvariablen des Systems
- Klicken Sie auf dem Windows-System mit der rechten Maustaste auf Arbeitsplatz oder Dieser PC.
- Wählen Sie Eigenschaften.
- Wählen Sie erweiterte Systemeinstellungen.
- Klicken Sie auf die Schaltfläche Umgebungsvariablen.
- Wählen Sie unter Systemvariablen PATH aus.
- Klicken Sie auf die Schaltfläche Bearbeiten.
- Klicken Sie auf die Schaltfläche Neu
- Fügen Sie den Pfad der GeckoDriver-Datei ein.
- OK klicken.
Probleme ohne Gecko-Treiber
Möglicherweise treten einige Probleme auf, wie die unten angegebenen.
# 1) Wenn Sie eine alte Version von Firefox und Selenium3 verwenden, wird die folgende Ausnahme angezeigt:
wie man ein Array von Objekten in Java deklariert
Ausnahme im Thread 'main' java.lang.IllegalStateException
#zwei) Wenn Sie die neueste Version von Firefox und eine alte Version von Selenium verwenden, wird die folgende Ausnahme angezeigt:
org.openqa.selenium.firefox.NotConnectedException : Nach 45000 ms kann keine Verbindung zum Host 127.0.0.1 auf Port 7055 hergestellt werden
#3) Wenn Sie die neueste Version von Firefox und WebDriver verwenden, GeckoDriver jedoch nicht, wird die folgende Ausnahme angezeigt:
Ausnahme im Thread 'main' java.lang.IllegalStateException: Der Pfad zur ausführbaren Treiberdatei muss von der Systemeigenschaft webdriver.gecko.driver festgelegt werden. Weitere Informationen finden Sie unter Hier .Die neueste Version kann von heruntergeladen werden Hier .
Zusätzliche Informationen zu GeckoDriver
Wie wir wissen, ist GeckoDriver ein Proxy, der bei der Kommunikation mit Gecko-basierten Browsern (z. B. Firefox) hilft und für die HTTP-API bereitgestellt wird.
Diese HTTP-API kann mithilfe des WebDriver-Protokolls verstanden werden. Es gibt einige Knoten im WebDriver-Protokoll, zu denen das lokale Ende, das entfernte Ende, der Zwischenknoten und der Endpunktknoten gehören. Die Kommunikation zwischen diesen Knoten wird im WebDriver-Protokoll beschrieben.
Das lokale Ende ist die Clientseite des WebDriver-Protokolls. Remote-Ende bedeutet Server-Seite des WebDriver-Protokolls. Der Zwischenknoten übernimmt die Rolle eines Proxys. Der Endpunktknoten wird von einem Benutzeragenten oder einem ähnlichen Programm aktiviert.
Vom WebDriver an GeckoDriver gesendete Befehle und Antworten werden in das Marionette-Protokoll übersetzt und dann von GeckoDriver an den Marionette-Treiber übertragen. Wir schließen daraus, dass GeckoDriver als Proxy zwischen diesen beiden WebDriver und Marionette fungiert.
Marionette ist in zwei Teile unterteilt, nämlich den Serverteil und den Clientteil. Befehle, die vom Client-Teil gesendet werden, werden vom Server-Teil ausgeführt.
Diese Befehlsausführungsarbeit wird im Browser ausgeführt. Marionette ist nichts anderes als eine Kombination aus einer Geckokomponente (die ein Marionettenserver ist) und einer externen Komponente (die als Marionettenclient bezeichnet wird). GeckoDriver ist in der Programmiersprache Rust geschrieben.
Fazit
GeckoDriver ist ein Zwischenfaktor zwischen Ihren Selenium-Skripten und Gecko-basierten Browsern wie Firefox.
GeckoDriver ist ein Proxy für die Kommunikation mit Gecko-basierten Browsern ( Z.B. Feuerfuchs). Firefox (Version 47 und höher) hat einige Änderungen vorgenommen, die dazu geführt haben, dass Treiber von Drittanbietern nicht mehr für die direkte Interaktion mit den Browsern unterstützt werden.
Dies ist der Hauptgrund, aus dem wir den GeckoDriver verwenden müssen. Der einfachste Weg, GeckoDriver in Ihrem Skript zu verwenden, besteht darin, die Verwendung von zu implementieren System.set-Eigenschaft. (System.setProperty ('webdriver.gecko.driver', 'Pfad der Gecko-Treiberdatei')).
Sind Sie neu bei GeckoDriver? Haben Sie heute in diesem GeckoDriver Selen etwas Neues gelernt? Oder haben Sie etwas Interessantes über GeckoDriver mit uns zu teilen? Fühlen Sie sich frei, Ihre Gedanken in den Kommentaren unten auszudrücken.
Literatur-Empfehlungen
- Cucumber Selenium Tutorial: Integration von Cucumber Java Selenium WebDriver
- Einführung in Selenium WebDriver - Selenium Tutorial # 8
- Selenium Find Element By Text Tutorial mit Beispielen
- Implementierung unseres ersten WebDriver-Skripts - Selenium WebDriver Tutorial # 10
- Umgang mit Warnungen / Popups in Selenium WebDriver - Selenium Tutorial # 16
- WebDriver Gesamte Einrichtung und Installation mit Eclipse - Selenium Tutorial # 9
- Ausführliche Eclipse-Tutorials für Anfänger
- Effizientes Selenium-Scripting und Fehlerbehebungsszenarien - Selenium-Lernprogramm Nr. 27