So finden Sie mit Selenium Elemente per Text

How Find Element Text With Selenium



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

In diesem Artikel zeige ich Ihnen, wie Sie Elemente von Webseiten mithilfe von Text in Selenium mit der Selenium-Python-Bibliothek finden und auswählen. Also lasst uns anfangen.







Voraussetzungen:

Um die Befehle und Beispiele dieses Artikels auszuprobieren, benötigen 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. Python virtuelle Umgebung Paket auf Ihrem Computer installiert.
  5. Auf Ihrem Computer installierte Webbrowser Mozilla Firefox oder Google Chrome.
  6. Muss wissen, wie man den Firefox Gecko-Treiber oder den Chrome Web-Treiber installiert.

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



Viele Artikel zu den anderen Themen finden Sie auf LinuxHint.com . Sehen Sie sich diese unbedingt an, wenn Sie Hilfe benötigen.





Einrichten eines Projektverzeichnisses:

Um alles organisiert zu halten, erstellen Sie ein neues Projektverzeichnis Selen-Textauswahl/ wie folgt:

$mkdir -pvSelen-Text-Auswahl/Fahrer



Navigieren Sie zum Selen-Textauswahl/ Projektverzeichnis wie folgt:

$CDSelen-Text-Auswahl/

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

$virtualenv .venv

Aktivieren Sie die virtuelle Umgebung wie folgt:

$Quelle.venv/bin/aktivieren Sie

Installieren Sie die Selenium Python-Bibliothek mit PIP3 wie folgt:

$ pip3 Selen installieren

Laden Sie alle erforderlichen Webtreiber herunter und installieren Sie sie im Fahrer/ Verzeichnis des Projekts. Den Vorgang zum Herunterladen und Installieren von Webtreibern habe ich in meinem Artikel erklärt Einführung in Selen in Python 3 .

Elemente nach Text suchen:

In diesem Abschnitt zeige ich Ihnen einige Beispiele zum Suchen und Auswählen von Webseitenelementen per Text mit der Selenium-Python-Bibliothek.

Ich beginne mit dem einfachsten Beispiel für die Auswahl von Webseitenelementen durch Text, das Auswählen von Links von der Webseite.

Auf der Login-Seite von facebook.com haben wir einen Link Konto vergessen? 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 Codezeilen ein.

vonSelenimportierenWebtreiber
vonSelen.Webtreiber.gemeinsames.Schlüssel importierenSchlüssel
vonSelen.Webtreiber.gemeinsames.von importierenVon
von Zeit importierenSchlaf
Browser=Webtreiber.Chrom(ausführbarer_Pfad='./drivers/chromedriver')
Browser.werden('https://www.facebook.com/')
AccountLink vergessen=Browser.find_element(Von.XPATH, '
//*[text()='Konto vergessen?']'
)
AccountLink vergessen.send_keys(Schlüssel.EINTRETEN)

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

Zeile 1-4 importiert alle benötigten Komponenten in das Python-Programm.

Zeile 6 erstellt ein Chrome Browser Objekt mit dem Chromtreiber binär aus dem Fahrer/ Verzeichnis des Projekts.

Zeile 8 weist den Browser an, die Website facebook.com zu laden.

Zeile 10 findet den Link mit dem Text Konto vergessen? Verwenden des XPath-Selektors. Dafür habe ich den XPath-Selektor verwendet //*[text()=’Konto vergessen?’] .

Der XPath-Selektor beginnt mit //, Das heißt, das Element kann sich überall auf der Seite befinden. Die * Symbol weist Selenium an, ein beliebiges Tag auszuwählen ( zu oder P oder Spanne, usw.), die der Bedingung in den eckigen Klammern entspricht [] . Hier ist die Bedingung, dass der Elementtext gleich dem Konto vergessen?

Die 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.

< zu href='http://dummysite.com'>Hallo Welt</ zu >

Zeile 11 sendet die Tastendruck zum Konto vergessen? Verknüpfung.

Führen Sie das Python-Skript aus ex01.py mit folgendem Befehl:

$python ex01.py

Wie Sie sehen, sucht und wählt der Webbrowser die Schlüssel auf dem Konto vergessen? Verknüpfung.

Die Konto vergessen? Der Link führt den Browser auf die folgende Seite.

Auf die gleiche Weise können Sie ganz einfach nach Elementen suchen, die Ihren gewünschten Attributwert haben.

Hier das Einloggen Knopf ist ein Eingang Element, das die Wert Attribut Einloggen . Sehen wir uns an, wie Sie dieses Element per Text auswählen.

Erstellen Sie ein neues Python-Skript ex02.py und geben Sie die folgenden Codezeilen ein.

vonSelenimportierenWebtreiber
vonSelen.Webtreiber.gemeinsames.Schlüssel importierenSchlüssel
vonSelen.Webtreiber.gemeinsames.von importierenVon
von Zeit importierenSchlaf
Browser=Webtreiber.Chrom(ausführbarer_Pfad='./drivers/chromedriver')
Browser.werden('https://www.facebook.com/')
Schlaf(5)
E-Mail-Eingabe=Browser.find_element(Von.XPATH, '//eingabe[@id='email']')
PasswortEingabe=Browser.find_element(Von.XPATH, '//eingabe[@id='pass']')
LoginButton=Browser.find_element(Von.XPATH, '//*[@value='Anmelden']')
emailEingabe.send_keys(' [E-Mail geschützt] ')
Schlaf(5)
PasswortEingabe.send_keys('Geheimpass')
Schlaf(5)
LoginButton.send_keys(Schlüssel.EINTRETEN)

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

Zeile 1-4 importiert alle benötigten Komponenten.

Zeile 6 erstellt ein Chrome Browser Objekt mit dem Chromtreiber binär aus dem Fahrer/ Verzeichnis des Projekts.

Zeile 8 weist den Browser an, die Website facebook.com zu laden.

Alles passiert so schnell, wenn Sie das Skript ausführen. Also habe ich die Schlaf() Funktion viele Male in ex02.py zum Verzögern von Browserbefehlen. Auf diese Weise können Sie beobachten, wie alles funktioniert.

Zeile 11 findet das E-Mail-Eingabetextfeld und speichert eine Referenz des Elements im E-Mail-Eingabe Variable.

Zeile 12 findet das Textfeld für die E-Mail-Eingabe und speichert eine Referenz des Elements im E-Mail-Eingabe Variable.

Zeile 13 findet das Eingabeelement mit dem Attribut Wert von Einloggen mit XPath-Selektor. Dafür habe ich den XPath-Selektor verwendet //*[@value=’Anmelden’] .

Der XPath-Selektor beginnt mit // . Das bedeutet, dass sich das Element überall auf der Seite befinden kann. Die * Symbol weist Selenium an, ein beliebiges Tag auszuwählen ( Eingang oder P oder Spanne, usw.), die der Bedingung in den eckigen Klammern entspricht [] . Hier ist die Bedingung das Elementattribut Wert ist gleich Einloggen .

Zeile 15 sendet die Eingabe[E-Mail geschützt]in das E-Mail-Eingabetextfeld und Zeile 16 verzögert den nächsten Vorgang.

Zeile 18 sendet den eingegebenen Geheimpass an das Textfeld zur Passworteingabe, und Zeile 19 verzögert die nächste Operation.

Zeile 21 sendet die Tastendruck zum Login-Button.

Führen Sie die ex02.py Python-Skript mit folgendem Befehl:

$python3 ex02.py

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

Anschließend navigiert die Seite zur nächsten Seite.

Suchen von Elementen anhand von Teiltexten:

Im vorherigen Abschnitt habe ich Ihnen gezeigt, wie Sie Elemente anhand eines bestimmten Textes finden. In diesem Abschnitt zeige ich Ihnen, wie Sie Elemente von Webseiten mithilfe von Teiltext finden.

Im Beispiel, ex01.py , ich habe nach dem Link-Element gesucht, das den Text enthält Konto vergessen? . Sie können dasselbe Linkelement mit Teiltext durchsuchen, wie z Konto vergessen . Dazu können Sie die enthält() XPath-Funktion, wie in Zeile 10 von gezeigt ex03.py . Der Rest der Codes sind die gleichen wie in ex01.py . Die Ergebnisse werden die gleichen sein.

In Zeile 10 von ex03.py , die Auswahlbedingung verwendet die enthält(Quelle, Text) XPath-Funktion. Diese Funktion benötigt 2 Argumente, Quelle, und Text .

Die enthält() Funktion prüft, ob die Text im zweiten Argument angegeben stimmt teilweise mit der Quelle Wert im ersten Argument.

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

In ex03.py , wird der Text des Elements überprüft.

Eine weitere nützliche XPath-Funktion, um Elemente von der Webseite mithilfe von 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 besteht darin, dass die beginnt mit() Funktion prüft, ob das zweite Argument Text ist der Startstring des ersten Arguments Quelle .

Ich habe das Beispiel umgeschrieben ex03.py um nach dem Element zu suchen, bei dem der Text beginnt mit 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 umgeschrieben ex02.py damit 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, wie Sie mit der Selenium-Python-Bibliothek Elemente von Webseiten per Text finden und auswählen. Jetzt sollten Sie mit der Selenium-Python-Bibliothek in der Lage sein, Elemente von Webseiten anhand von bestimmtem Text oder Teiltext zu finden.