So finden Sie Element nach Text mit Selenium

So finden Sie Element nach Text mit Selenium
Das Suchen und Auswählen von Elementen auf der Webseite ist der Schlüssel zum Web -Scraping mit Selen. Sie können Elemente mit einem Tag -Namen, einer ID, einem Klassennamen, XPath -Selektor, CSS -Selektor usw. auswählen. in Selen. Sie können auch Elemente mit einem bestimmten Text mit Selen auswählen. Dies ist hilfreich für die Auswahl von Links und Schaltflächen auf der Webseite einfach. Auch wenn sich die Seitenstruktur ändert, sollte Ihr Selektor so lange funktionieren, solange der Text des Webseitenelements gleich bleibt, einwandfrei funktionieren. Dies ist der Vorteil der Auswahl von Links und Schaltflächen mithilfe von Text in Selenium.

In diesem Artikel werde ich Ihnen zeigen, wie Sie Elemente auf Webseiten mit Text in Selen mit der Selenium Python Library finden und ausgewählt werden können. Also lasst uns anfangen.

Voraussetzungen:

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

  1. Eine Linux -Verteilung (vorzugsweise Ubuntu), die auf Ihrem Computer installiert ist.
  2. Python 3 auf Ihrem Computer installiert.
  3. PIP 3 auf Ihrem Computer installiert.
  4. Python virtualenv Paket auf Ihrem Computer installiert.
  5. Mozilla Firefox oder Google Chrome -Webbrowser auf Ihrem Computer installiert.
  6. Muss wissen, wie man den Firefox Gecko -Treiber oder den Chrome -Web -Treiber installiert.

Lesen Sie meinen Artikel, um die Anforderungen 4, 5 und 6 zu erfüllen Einführung in Selen in Python 3.

Sie können viele Artikel zu den anderen Themen unter LinuxHint finden.com. Schauen Sie sich sie an, wenn Sie Hilfe benötigen.

Einrichten eines Projektverzeichnisses:

Um alles organisiert zu halten, erstellen Sie ein neues Projektverzeichnis selenium-text-select/ folgendermaßen:

$ mkdir -pv selenium-text-select/treiber

Navigieren zum selenium-text-select/ Projektverzeichnis wie folgt:

$ cd selenium-text-select/

Erstellen Sie eine virtuelle Python -Umgebung im Projektverzeichnis wie folgt:

$ virtualenv .Venv

Aktivieren Sie die virtuelle Umgebung wie folgt:

$ Quelle .Venv/bin/aktivieren

Installieren Sie die Selenium Python Library mit PIP3 wie folgt:

$ pip3 Selen installieren

Laden Sie den gesamten erforderlichen Web -Treiber herunter und installieren Sie sie in der Treiber/ Projektverzeichnis. Ich habe den Prozess des Herunterladens und Installierens von Webtreibern in meinem Artikel erläutert Einführung in Selen in Python 3.

Elemente nach Text finden:

In diesem Abschnitt werde ich Ihnen einige Beispiele für die Suche und Auswahl von Webseitenelementen nach Text mit der Selenium Python Library zeigen.

Ich werde mit dem einfachsten Beispiel für die Auswahl von Webseitenelementen nach Text beginnen und Links auf der Webseite auswählen.

Auf der Anmeldeseite von Facebook.com, wir haben einen Link Vergessenes Konto? Wie Sie im Screenshot unten sehen können. Wählen wir diesen Link mit Selenium aus.

Erstellen Sie ein neues Python -Skript Ex01.py und geben Sie die folgenden Codes -Zeilen darin ein.

vom Selenium importieren Webdriver
Aus Selen.Webdriver.gemeinsam.Schlüssel importieren Schlüsseln
Aus Selen.Webdriver.gemeinsam.durch Import durch
Zum Zeitpunkt des Imports
browser = webdriver.Chrome (ausführbarer_path = "./Treiber/Chromedriver ")
Browser.Get ("https: // www.Facebook.com/")
vergessenAccountlink = browser.find_element (von.XPath, "Post-66569 -_hlk47727696">
//*[text () = 'vergessenes Konto vergessen?'] ")
vergessenAccountlink.send_keys (Schlüssel.EINGEBEN)

Sobald Sie fertig sind, speichern Sie die Ex01.py Python -Skript.

Zeile 1-4 importiert alle erforderlichen Komponenten in das Python-Programm.

Zeile 6 erzeugt ein Chrom Browser Objekt mit dem Chromedriver binär von der Treiber/ Projektverzeichnis.

Zeile 8 teilt dem Browser an, die Website Facebook zu laden.com.

Zeile 10 findet den Link, der den Text hat Vergessenes Konto? Verwenden von XPath Selector. Dafür habe ich den XPath -Selektor verwendet //*[text () = 'vergessenes Konto vergessen?'].

Der XPath -Selektor beginnt mit //, Das heißt, das Element kann überall auf der Seite sein. Der * Das Symbol fordert Selen an, ein Tag auszuwählen (Tag (A oder P oder Spanne, usw.) Das entspricht dem Zustand in den quadratischen Klammern []. Hier ist die Bedingung, der Elementtext ist gleich dem dem Vergessenes Konto?

Der Text() Die XPath -Funktion wird verwendet, um den Text eines Elements zu erhalten.

Zum Beispiel, Text() kehrt zurück Hallo Welt Wenn es das folgende HTML -Element auswählt.

Hallo Welt

Zeile 11 sendet die Taste zum Taste zur Vergessenes Konto? Verknüpfung.

Führen Sie das Python -Skript aus Ex01.py mit dem folgenden Befehl:

$ python ex01.py

Wie Sie sehen können, findet der Webbrowser, wählt und drückt die aus Schlüssel zum Vergessenes Konto? Verknüpfung.

Der Vergessenes Konto? Der Link bringt den Browser auf die folgende Seite.

Auf die gleiche Weise können Sie problemlos nach Elementen suchen, die den gewünschten Attributwert haben.

Hier das Anmeldung Taste ist ein Eingang Element, das das hat Wert Attribut Anmeldung. Lassen Sie uns sehen, wie Sie dieses Element nach Text auswählen.

Erstellen Sie ein neues Python -Skript Ex02.py und geben Sie die folgenden Codes -Zeilen darin ein.

vom Selenium importieren Webdriver
Aus Selen.Webdriver.gemeinsam.Schlüssel importieren Schlüsseln
Aus Selen.Webdriver.gemeinsam.durch Import durch
Zum Zeitpunkt des Imports
browser = webdriver.Chrome (ausführbarer_path = "./Treiber/Chromedriver ")
Browser.Get ("https: // www.Facebook.com/")
Schlaf (5)
mailinput = browser.find_element (von.XPath, "// Eingabe [@id = 'E -Mail']"))
passingInput = browser.find_element (von.XPath, "// Eingabe [@id = 'Pass']"))
LoginButton = Browser.find_element (von.XPath, "//*[@value = 'melden Sie sich an']"))
E -Mail -I -IMput.send_keys ('Dummy@E -Mail.com '))
Schlaf (5)
passingInput.SEND_KEYS ('Secret-Pass')
Schlaf (5)
LoginButton.send_keys (Schlüssel.EINGEBEN)

Sobald Sie fertig sind, speichern Sie die Ex02.py Python -Skript.

Zeile 1-4 importiert alle erforderlichen Komponenten.

Zeile 6 erzeugt ein Chrom Browser Objekt mit dem Chromedriver binär von der Treiber/ Projektverzeichnis.

Zeile 8 teilt dem Browser an, die Website Facebook zu laden.com.

Alles passiert so schnell, sobald Sie das Skript ausgeführt haben. Also habe ich die benutzt schlafen() viele Male in funktionieren Ex02.py Zur Verzögerung der Browserbefehle. Auf diese Weise können Sie beobachten, wie alles funktioniert.

Zeile 11 findet das Textfeld für E -Mail -Eingänge und speichert eine Referenz des Elements in der E -Mail -I -IMput Variable.

Zeile 12 findet das Textfeld für E -Mail -Eingänge und speichert eine Referenz des Elements in der E -Mail -I -IMput Variable.

Zeile 13 findet das Eingabeelement, das das Attribut hat Wert von Anmeldung Verwenden von XPath Selector. Dafür habe ich den XPath -Selektor verwendet //*[@value = 'melden Sie sich an'].

Der XPath -Selektor beginnt mit //. Es bedeutet, dass das Element überall auf der Seite sein kann. Der * Das Symbol fordert Selen an, ein Tag auszuwählen (Tag (Eingang oder P oder Spanne, usw.) Das entspricht dem Zustand in den quadratischen Klammern []. Hier ist die Bedingung das Elementattribut Wert ist gleich Anmeldung.

Zeile 15 sendet die Eingabedummy@E -Mail.com zum E -Mail -Eingabetastfeld und Zeile 16 verzögert den nächsten Vorgang.

Zeile 18 sendet den Eingangsgeheimnis-Pass an das Textfeld für Kennworteingänge, und Zeile 19 verzögert den nächsten Vorgang.

Zeile 21 sendet die Taste zum Anmeldetaste Drücken.

Leiten Sie die Ex02.py Python -Skript mit dem folgenden Befehl:

$ python3 ex02.py

Wie Sie sehen können, sind die Textfelder von E -Mail- und Passwort mit unseren Dummy -Werten gefüllt und die Anmeldung Taste wird gedrückt.

Dann navigiert die Seite zur folgenden Seite.

Elemente nach Teiltext finden:

Im früheren Abschnitt habe ich Ihnen gezeigt, wie Sie Elemente nach spezifischem Text finden können. In diesem Abschnitt werde ich Ihnen zeigen, wie Sie Elemente von Webseiten mit Teiltext finden können.

Im Beispiel, Ex01.py, Ich habe nach dem Linkelement gesucht, das den Text hat Vergessenes Konto?. Sie können das gleiche Linkelement mit einem Teiltext wie z. B. durchsuchen Vergessene ACC. Dazu können Sie die verwenden enthält () XPath -Funktion, wie in Zeile 10 von gezeigt Ex03.py. Der Rest der Codes ist der gleiche wie in Ex01.py. Die Ergebnisse werden gleich sein.

In Zeile 10 von Ex03.py, Die Auswahlbedingung verwendete die Enthält (Quelle, Text) XPath -Funktion. Diese Funktion erfordert 2 Argumente, Quelle, Und Text.

Der enthält () Funktion prüft, ob die Text Gegeben im zweiten Argument entspricht teilweise dem Quelle Wert im ersten Argument.

Die Quelle kann der Text des Elements sein (Text()) oder der Attributwert des Elements (@attr_name).

In Ex03.py, Der Text des Elements wird überprüft.

Eine weitere nützliche XPath -Funktion, um Elemente auf der Webseite mit einem Teiltext zu finden, ist beginnt mit (Quelle, Text). Diese Funktion hat die gleichen Argumente wie die enthält () Funktion und wird auf die gleiche Weise verwendet. Der einzige Unterschied ist, dass die beginnt mit() Funktion prüft, ob das zweite Argument Text ist die Startfolge des ersten Arguments Quelle.

Ich habe das Beispiel neu geschrieben Ex03.py nach dem Element zu suchen, für das der Text beginnt Vergessene, Wie Sie in Zeile 10 von sehen können Ex04.py. Das Ergebnis ist das gleiche wie in Ex02 Und Ex03.py.

Ich habe auch neu geschrieben Ex02.py so dass es nach dem Eingabeelement sucht, für das die Wert Attribut beginnt mit Protokoll, Wie Sie in Zeile 13 von sehen können Ex05.py. Das Ergebnis ist das gleiche wie in Ex02.py.

Abschluss:

In diesem Artikel habe ich Ihnen gezeigt. Jetzt sollten Sie in der Lage sein, Elemente auf Webseiten nach spezifischem Text oder teilweise Text mit der Selenium -Python -Bibliothek zu finden.