Selenium

Selenium mit Firefox-Treiber verwenden

Selenium mit Firefox-Treiber verwenden
Selenium ist ein großartiges Tool für Browsertests, Webautomatisierung und Web-Scraping. Selenium kann die meisten modernen Webbrowser steuern. ich.e., Firefox, Chrome, Chromium, Opera, Apple Safari. Um einen Browser zu steuern, benötigt Selenium ein Tool namens Web-Treiber. Die meisten Anbieter moderner Browser bieten die Webtreibersoftware für ihre Webbrowser an.

Um den Mozilla Firefox Webbrowser von Selenium aus zu steuern, müssen Sie den Gecko Web Driver verwenden.

In diesem Artikel zeige ich Ihnen, wie Sie Selenium für die Ausführung von Browsertests, Webautomatisierung und Web-Scraping-Aufgaben mit dem Webbrowser Mozilla Firefox einrichten. Also lasst uns anfangen.

Voraussetzungen:

Um die Befehle und Beispiele dieses Artikels auszuprobieren, müssen Sie,

1) Eine auf Ihrem Computer installierte Linux-Distribution (vorzugsweise Ubuntu).
2) Python 3 auf Ihrem Computer installiert.
3) PIP 3 auf Ihrem Computer installiert.
4) Mozilla Firefox auf Ihrem Computer installiert.

Viele Artikel zu diesen Themen finden Sie auf LinuxHint.com. Schauen Sie sie sich an, wenn Sie Hilfe benötigen.

Vorbereiten der virtuellen Python 3-Umgebung für das Projekt:

Python Virtual Environment wird verwendet, um ein isoliertes Python-Projektverzeichnis zu erstellen. Die Python-Module, die Sie mit PIP installieren, werden nur im Projektverzeichnis installiert, nicht global.

Python virtuelle Umgebung -Modul wird verwendet, um virtuelle Python-Umgebungen zu verwalten.

Sie können Python installieren virtuelle Umgebung Modul global mit PIP 3 wie folgt:

$ sudo pip3 install virtualenv

Python virtuelle Umgebung sollte installiert werden.

Erstellen Sie ein Projektverzeichnis Selen-Firefox/ in Ihrem aktuellen Arbeitsverzeichnis wie folgt:

$ mkdir -pv selenium-firefox/drivers

Navigieren Sie zu Ihrem neu erstellten Projektverzeichnis Selen-Firefox/ wie folgt:

$ cd Selen-Firefox/

Erstellen Sie mit dem folgenden Befehl eine virtuelle Python-Umgebung in Ihrem Projektverzeichnis:

$ virtualenv .venv

Die virtuelle Python-Umgebung sollte in Ihrem Projektverzeichnis erstellt werden.

Aktivieren Sie die virtuelle Python-Umgebung aus Ihrem Projektverzeichnis mit dem folgenden Befehl:

$ Quelle .env/bin/aktivieren

Installieren der Selenium-Python-Bibliothek:

Die Selenium-Bibliothek ist im offiziellen Python PyPI-Repository verfügbar.

Sie können die Selenium Python-Bibliothek mit PIP 3 wie folgt installieren:

$ pip3 Selen installieren

Selenium Python Bibliothek sollte installiert sein.

Installieren des Firefox Gecko-Treibers:

Um den Firefox Gecko-Treiber herunterzuladen, besuchen Sie die GitHub-Versionsseite von mozilla/geckodriver in Ihrem bevorzugten Webbrowser.

Wie Sie sehen können, v0.26.0 ist zum Zeitpunkt der Erstellung dieses Artikels die neueste Version von Firefox Gecko Driver.

Um den Firefox Gecko-Treiber herunterzuladen, scrollen Sie ein wenig nach unten und klicken Sie auf den Linux-Geckodriver-Tar.gz-Archiv abhängig von Ihrer Betriebssystemarchitektur.

Wenn Sie ein 32-Bit-Betriebssystem verwenden, klicken Sie auf das geckodriver-v0.26.0-linux32.Teer.gz Verknüpfung.

Wenn Sie ein 64-Bit-Betriebssystem verwenden, klicken Sie auf das geckodriver-v0.26.0-linuxx64.Teer.gz Verknüpfung.

Ich werde die 64-Bit-Version des Firefox Gecko-Treibers herunterladen.

Ihr Browser sollte Sie auffordern, das Archiv zu speichern. Wählen Datei speichern und klicke auf OK.

Der Firefox Gecko-Treiber sollte heruntergeladen werden.

Das Firefox Gecko Driver-Archiv sollte im . heruntergeladen werden ~/Downloads Verzeichnis.

Sie können die extrahieren geckodriver-v0.26.0-linux64.Teer.gz Archiv aus dem ~/Downloads Verzeichnis zum Fahrer/ Verzeichnis Ihres Projekts mit dem folgenden Befehl:

$ tar -xzf ~/Downloads/geckodriver-v0.26.0-linux64.Teer.gz -C-Treiber/

Sobald das Firefox Gecko Driver-Archiv extrahiert wurde, wird eine neue Binärdatei Geckotreiber sollte im erstellt werden Fahrer/ Verzeichnis Ihres Projekts, wie Sie im Screenshot unten sehen können.

Erste Schritte mit Selenium mit dem Firefox Gecko-Treiber:

In diesem Abschnitt zeige ich Ihnen, wie Sie Ihr erstes Selenium-Python-Skript einrichten, um zu testen, ob der Firefox Gecko-Treiber funktioniert.

Erstellen Sie zuerst ein neues Python-Skript ex00.py in Ihrem Projektverzeichnis und geben Sie die folgenden Zeilen ein.

vom Selen-Import-Webtreiber
aus Selen.Webtreiber.verbreitet.Schlüsselimport Schlüssel
Browser = Webtreiber.Firefox(ausführbarer_Pfad="./drivers/geckodriver")
Browser.erhalten('https://www.linuxhint.com")
print('Titel: %s' % Browser.Titel)
Browser.Verlassen()

Wenn du fertig bist, speichere ex00.py Python-Skript.

Zeile 1 und 2 importieren alle benötigten Komponenten aus dem Selen Python-Bibliothek.

Zeile 4 erstellt ein Firefox-Webtreiberobjekt mit dem Webtreiber.Feuerfuchs() -Methode und speichert sie in a Browser Variable. Das ausführbarer_Pfad -Argument wird verwendet, um dem Webtreiber mitzuteilen, wo er nach der Firefox-Gecko-Treiber-Binärdatei suchen soll. In diesem Fall ist die Geckotreiber binär aus dem Fahrer/ Verzeichnis des Projekts.

Auf Linie 6, Browser.erhalten() Methode lädt hoch linuxhint.com in einem Firefox-Webbrowser.

Sobald die Website geladen ist, gibt Zeile 7 den Titel der Website aus, hier, Browser.Titel -Eigenschaft wird verwendet, um auf den Titel der Website zuzugreifen.

Zeile 8 schließt den Firefox-Webbrowser mit dem Browser.Verlassen() Methode.

Sie können das Python-Skript ausführen ex00.py mit folgendem Befehl:

$ python3 ex00.py

Selenium sollte einen Firefox-Webbrowser öffnen und den Linuxhint aufrufen.com-Website automatisch.

Sobald die Seite geladen ist, sollte der Website-Titel auf der Konsole gedruckt und der Webbrowser automatisch geschlossen werden.

Selenium funktioniert also korrekt mit dem Firefox Gecko-Treiber.

Beispiel 01: Ausführen von Firefox im Headless-Modus mit Selenium

Sie können Selenium auch mit Firefox Gecko Driver im Headless-Modus ausführen. Selenium Firefox Headless-Modus erfordert keine grafische Benutzeroberfläche, die auf Ihrem Computer installiert ist. So können Sie Selenium Firefox auf jedem Linux-Headless-Server ausführen.

Erstellen Sie zuerst ein neues Python-Skript ex01.py in Ihrem Projektverzeichnis und geben Sie die folgenden Codezeilen ein.

vom Selen-Import-Webtreiber
aus Selen.Webtreiber.Feuerfuchs.Optionen importieren Optionen
aus Selen.Webtreiber.verbreitet.Schlüsselimport Schlüssel
firefoxOptions = Optionen()
FirefoxOptionen.add_argument("-kopflos")
Browser = Webtreiber.Firefox(ausführbarer_Pfad="./drivers/geckodriver", options=firefoxOptions)
Browser.bekommen('https://www.linuxhint.com")
print('Titel: %s' % Browser.Titel)
Browser.Verlassen()

Wenn Sie fertig sind, speichern Sie die ex01.py Python-Skript.

Zeile 1 und Zeile 3 sind identisch mit Zeile 1 und Zeile 2 von ex00.py Python-Skript.

Zeile 2 importiert Firefox Optionen von dem Selen Bibliothek.

Zeile 5 erstellt ein Firefox Options-Objekt und speichert es im in FirefoxOptionen Variable.

Zeile 6 verwendet die FirefoxOptionen.add_argument() Methode zum Hinzufügen der -kopflos Firefox-Befehlszeilen-Flag zum FirefoxOptionen Objekt.

Auf Linie 8, Optionen Argument wird verwendet, um die FirefoxOptionen beim Initialisieren des Firefox-Webtreibers mit dem Webtreiber.Feuerfuchs() Methode.

Die restlichen Zeilen der of ex01.py Skript ist das gleiche wie das ex00.py.

Sie können das Python-Skript ausführen ex01.py mit folgendem Befehl:

$ python3 ex01.py

Wie Sie sehen, ist der Titel der Website (linuxhint.com) wird auf der Konsole gedruckt, ohne eine grafische Version des Firefox-Webbrowsers zu öffnen.

Wie Sie sehen, arbeitet Selenium auch an einer Ubuntu-Headless-Umgebung, in der ich keine grafische Benutzeroberfläche installiert habe.

Jetzt, wo du weißt, wie man die -kopflos Firefox-Befehlszeilen-Flag/Option mit dem Selenium Firefox Gecko-Treiber können Sie auch alle anderen Firefox-Befehlszeilen-Flags/-Optionen übergeben.

Sie finden alle unterstützten Firefox-Befehlszeilen-Flags/-Optionen in den Befehlszeilenoptionen - Mozilla | MDN-Seite.

Beispiel 02: Extraktion von Lorem Ipsum mit Selen

In diesem Abschnitt zeige ich Ihnen, wie Sie mit Selenium Firefox Gecko Driver grundlegendes Web-Scraping durchführen.

Besuchen Sie zuerst die Lorem Ipsum Generator-Seite im Firefox-Webbrowser. Wie Sie sehen können, hat die Seite 5 zufällige Absätze generiert. Lassen Sie uns den gesamten generierten Text (alle 5 Absätze) von dieser Seite extrahieren.

Bevor Sie mit dem Extrahieren von Informationen aus einer Webseite beginnen, müssen Sie die HTML-Struktur des Inhalts der Webseite kennen.

Sie können die HTML-Struktur des Inhalts, den Sie extrahieren möchten, ganz einfach mithilfe der Firefox-Entwicklertool. Öffnen Firefox-Entwicklertool, Drücken Sie die rechte Maustaste (RMB) auf der Seite und klicken Sie auf Element prüfen (Q).

Firefox-Entwicklertool sollte geöffnet werden. Klick auf das Prüfsymbol () wie im Screenshot unten markiert.

Bewegen Sie den Mauszeiger über den ersten Absatz, wie im Screenshot unten gezeigt. Drücken Sie dann die linke Maustaste (LMB), um es auszuwählen.

Die HTML-Struktur der Absätze soll im Prüfen Registerkarte des Firefox-Entwicklertool. Wie Sie sehen können, befinden sich die generierten lorem ipsum-Absätze innerhalb von a div Tag, das die hat Ich würde Lipsum.

Um die lorem ipsum-Absätze mit Selenium Firefox Gecko Driver zu extrahieren, erstellen Sie ein neues Python-Skript ex02.py in Ihrem Projektverzeichnis und geben Sie die folgenden Codezeilen ein.

vom Selen-Import-Webtreiber
aus Selen.Webtreiber.Feuerfuchs.Optionen importieren Optionen
aus Selen.Webtreiber.verbreitet.Schlüsselimport Schlüssel
firefoxOptions = Optionen()
FirefoxOptionen.add_argument("-kopflos")
Browser = Webtreiber.Firefox(ausführbarer_Pfad="./drivers/geckodriver", options=firefoxOptions)
Browser.erhalten('https://www.Lipsum.com/feed/html')
lipsum = browser.find_element_by_id('lipsum')
drucken (lipsum.Text)
Browser.Verlassen()

Wenn Sie fertig sind, speichern Sie die ex02.py Python-Skript.

Zeile 10 lädt die Lorem-Ipsum-Generator-Seite mit der Browser.erhalten() Methode.

Der Inhalt von Lorem ipsum befindet sich in a div tag mit der id Lipsum. Zeile 12 verwendet die Browser.find_element_by_id() Methode, um es von der Webseite auszuwählen und im . zu speichern Lipsum Variable.

Zeile 13 druckt den generierten Lorem ipsum Inhalt auf der Konsole. Hier die Text -Eigenschaft wird verwendet, um auf den Inhalt der div Element mit der ID Lipsum.

Führen Sie nun das Python-Skript aus ex02.py wie folgt:

$ python3 ex02.py

Wie Sie sehen können, hat Selenium den Inhalt von Lorem ipsum korrekt von der Webseite extrahiert.

Ausführen des Python-Skripts ex02.py Erneut erhalten Sie eine andere Ausgabe, wie Sie im Screenshot unten sehen können.

Beispiel 03: Extrahieren von Listendaten mit Selenium

In diesem Abschnitt zeige ich Ihnen ein Beispiel für Web-Scraping-Listen-Daten von einer Website, die den Selenium Firefox Gecko-Treiber im Headless-Modus verwendet.

Besuchen Sie zuerst den Zufallsnamen-Generator.Informationen aus dem Firefox-Webbrowser. Diese Website generiert jedes Mal 10 zufällige Namen, wenn Sie die Seite neu laden, wie Sie im Screenshot unten sehen können. Unser Ziel ist es, diese zufälligen Namen mit Selenium im Headless-Modus zu extrahieren.

Um die HTML-Struktur der Liste herauszufinden, müssen Sie das Firefox-Entwicklertool. Drücken Sie dazu die rechte Maustaste (RMB) auf der Seite und klicken Sie auf Element prüfen (Q).

Firefox-Entwicklertool sollte geöffnet werden. Klick auf das Prüfsymbol () wie im Screenshot unten markiert.

Bewegen Sie dann den Mauszeiger über die Liste der Zufällige Namen. Die Liste sollte wie im Screenshot unten markiert markiert sein. Drücken Sie dann die linke Maustaste (LMB), um die Liste auszuwählen.

Der HTML-Code der Liste sollte im Inspektor Registerkarte des Firefox-Entwicklertool. Hier befindet sich die Liste der zufälligen Namen in a div Element. Das div Element hat die Klasse Name Ergebnisse. Darin haben wir ein ol Element mit dem Klasse Name Namensliste. Innerhalb der ol Element, jeder der Namen ist in a li Element.

Daraus können wir sagen, dass um zum zu gelangen li Tags, wir müssen folgen div.Ergebnisse > ol.Namensliste > li

Unser CSS-Selektor wird also sein div.Ergebnisse ol.Namensliste li (ersetzen Sie einfach die > Zeichen mit Leerzeichen)

Um diese zufälligen Namen zu extrahieren, erstellen Sie ein neues Python-Skript ex03.py und geben Sie die folgenden Codezeilen ein.

vom Selen-Import-Webtreiber
aus Selen.Webtreiber.Feuerfuchs.Optionen importieren Optionen
aus Selen.Webtreiber.verbreitet.Schlüsselimport Schlüssel
firefoxOptions = Optionen()
FirefoxOptionen.add_argument("-kopflos")
Browser = Webtreiber.Firefox(ausführbarer_Pfad="./drivers/geckodriver", options=firefoxOptions)
Browser.get("http://zufalls-name-generator.die Info/")
Namensliste = Browser.find_elements_by_css_selector('div.Ergebnisse ol.Namensliste li')
für Namen in Namensliste:
drucken (Name.Text)
Browser.Verlassen()

Wenn Sie fertig sind, speichern Sie die ex03.py Python-Skript.

Zeile 10 lädt die Website des Zufallsnamengenerators mit dem Browser.erhalten() Methode.

Zeile 11 wählt die Namensliste mit der Browser.find_elements_by_css_selector() Methode. Diese Methode verwendet den CSS-Selektor div.Ergebnisse ol.Namensliste li um die Namensliste zu finden. Anschließend wird die Namensliste im Namensliste Variable.

In den Zeilen 13 und 14, a zum Schleife wird verwendet, um durch die Namensliste Liste von li Elemente. In jeder Iteration wird der Inhalt der li Element wird auf der Konsole gedruckt.

Führen Sie nun das Python-Skript aus ex03.py wie folgt:

$ python3 ex03.py

Wie Sie sehen können, ist das Python-Skript ex03.py habe alle zufälligen Namen von der Webseite geholt.

Wenn Sie das Skript ein zweites Mal ausführen, sollte es eine neue Liste mit zufälligen Namen zurückgeben, wie Sie im Screenshot unten sehen können.

Fazit:

Dieser Artikel soll Ihnen den Einstieg in Selenium über den Firefox-Webbrowser erleichtern. Sie sollten in der Lage sein, ein Selenium Firefox Gecko-Treiberprojekt ziemlich einfach einzurichten und Ihre Browsertests, Webautomatisierung und Web-Scraping-Aufgaben auszuführen.

Emulieren Sie Mausklicks, indem Sie den Mauszeiger mit der klicklosen Maus in Windows 10 bewegen
Die Verwendung einer Maus oder Tastatur in der falschen Haltung bei übermäßiger Nutzung kann zu vielen gesundheitlichen Problemen führen, einschließli...
Fügen Sie mit diesen kostenlosen Tools Mausgesten zu Windows 10 hinzu
In den letzten Jahren haben sich Computer und Betriebssysteme stark weiterentwickelt. Es gab eine Zeit, in der Benutzer Befehle verwenden mussten, um ...
Steuern und verwalten Sie Mausbewegungen zwischen mehreren Monitoren in Windows 10
Dual-Display-Maus-Manager lässt Sie die Mausbewegung zwischen mehreren Monitoren steuern und konfigurieren, indem Sie ihre Bewegungen in der Nähe der ...