XPath in Selenium: Wie finde und schreibe ich? (Text, Enthält, UND)

Was ist XPath in Selen?

XPath in Selen ist ein XML-Pfad, der für die Navigation durch die HTML-Struktur der Seite verwendet wird. Es handelt sich um eine Syntax oder Sprache zum Auffinden beliebiger Elemente auf einer Webseite mithilfe eines XML-Pfadausdrucks. XPath kann sowohl für HTML- als auch für XML-Dokumente verwendet werden, um mithilfe der HTML-DOM-Struktur die Position eines beliebigen Elements auf einer Webseite zu ermitteln.

Wenn in der Selenium-Automatisierung die Elemente nicht von den allgemeinen Locators wie ID, Klasse, Name usw. gefunden werden, wird XPath verwendet, um ein Element auf der Webseite zu finden.

In diesem Tutorial lernen wir den Xpath und verschiedene XPath-Ausdrücke kennen, um die COM zu findenplex oder dynamische Elemente, deren Attribute sich bei Aktualisierung oder anderen Vorgängen dynamisch ändern.

XPath-Syntax

XPath enthält den Pfad des Elements, das sich auf der Webseite befindet. Die Standard-XPath-Syntax zum Erstellen von XPath lautet.

Xpath=//tagname[@attribute='value']

Das Grundformat von XPath in Selenium wird unten anhand eines Screenshots erläutert.

XPath-Syntax
Grundformat von XPath
  • // : Aktuellen Knoten auswählen.
  • Verlinke den Namen: Tagname des jeweiligen Knotens.
  • @: Attribut auswählen.
  • Attribut: Attributname des Knotens.
  • Wert: Wert des Attributs.

Um das Element auf Webseiten genau zu finden, gibt es verschiedene Arten von Locators:

XPath-Locator Finden Sie verschiedene Elemente auf der Webseite
ID Um das Element anhand der ID des Elements zu finden
Klassenname Um das Element anhand des Klassennamens des Elements zu finden
Name Um das Element anhand des Namens zu finden
Link Text Um das Element anhand des Textes des Links zu finden
XPath XPath ist erforderlich, um das dynamische Element zu finden und zwischen verschiedenen Elementen der Webseite zu wechseln
CSS-Pfad Der CSS-Pfad findet auch Elemente ohne Namen, Klasse oder ID.

Arten von X-Pfaden

Es gibt zwei Arten von XPath:

1) Absoluter XPath

2) Relativer XPath

Absoluter XPath

Dies ist der direkte Weg, das Element zu finden, aber der Nachteil des absoluten XPath besteht darin, dass dieser XPath fehlschlägt, wenn Änderungen am Pfad des Elements vorgenommen werden.

Das Hauptmerkmal von XPath ist, dass es mit einem einzelnen Schrägstrich (/) beginnt, was bedeutet, dass Sie das Element vom Wurzelknoten aus auswählen können.

Unten sehen Sie das Beispiel eines absoluten Xpath-Ausdrucks des im folgenden Bildschirm gezeigten Elements.

HINWEIS: Sie können Folgendes übenwing XPath-Übung dazu http://demo.guru99.com/test/selenium-xpath.html

Klicken Sie hier wenn das Video nicht zugänglich ist

Absoluter XPath:

/html/body/div[2]/div[1]/div/h4[1]/b/html[1]/body[1]/div[2]/div[1]/div[1]/h4[1]/b[1]

Absoluter XPath

Absoluter XPath

Relativer XPath

Relativer XPath beginnt in der Mitte der HTML-DOM-Struktur. Es beginnt mit double Schrägstrich (//). Es kann überall auf der Webseite nach Elementen suchen, sodass kein langer XPPath geschrieben werden muss und Sie in der Mitte der HTML-DOM-Struktur beginnen können. Relativer XPath wird immer bevorzugt, da es sich nicht um einen vollständigen Pfad vom Stammelement handelt.

Unten sehen Sie das Beispiel eines relativen XPath-Ausdrucks desselben Elements, das im folgenden Bildschirm gezeigt wird. Dies ist das gängige Format, das zum Suchen von Elementen mit XPath verwendet wird.

Klicken Sie hier wenn das Video nicht zugänglich ist

Relative XPath: //div[@class='featured-box cloumnsize1']//h4[1]//b[1]

Relativer XPath

Relativer XPath

Was sind XPath-Achsen?

XPath-Achsen durchsuchen verschiedene Knoten im XML-Dokument vom aktuellen Kontextknoten aus. XPath-Achsen sind die Methoden, mit denen dynamische Elemente gefunden werdenwise Mit der normalen XPath-Methode ohne ID, Klassenname, Name usw. nicht möglich.

Axes-Methoden werden verwendet, um die Elemente zu finden, die sich beim Aktualisieren oder anderen Vorgängen dynamisch ändern. Es gibt nur wenige Achsenmethoden, die häufig verwendet werden Selenium-Webtreiber wie Kind, Elternteil, Vorfahre, Geschwister, Vorgänger, Selbst usw.

So schreiben Sie dynamischen XPath in Selenium WebDriver

1) Grundlegender XPath

XPath-Ausdrücke wählen Knoten oder Knotenlisten auf der Grundlage von Attributen wie aus ID, Name, Klassennameusw. aus dem XML-Dokument, wie unten dargestellt.

Xpath=//input[@name='uid']

Hier ist ein Link, um auf die Seite zuzugreifen http://demo.guru99.com/test/selenium-xpath.html

Grundlegender XPath

Grundlegender XPath

Einige weitere grundlegende XPath-Ausdrücke:

Xpath=//input[@type='text']
Xpath=//label[@id='message23']
Xpath=//input[@value='RESET']
Xpath=//*[@class='barone']
Xpath=//a[@href='http://demo.guru99.com/']
Xpath=//img[@src='//guru99.com/images/home/java.png']

2) Enthält()

Contains() ist eine Methode, die im XPath-Ausdruck verwendet wird. Es wird verwendet, wenn sich der Wert eines Attributs dynamisch ändert, beispielsweise Anmeldeinformationen.

Die Funktion „Einschließen“ bietet die Möglichkeit, das Element mit Teiltext zu finden, wie im folgenden XPath-Beispiel gezeigt.

In diesem Beispiel haben wir versucht, das Element zu identifizieren, indem wir einfach einen Teiltextwert des Attributs verwendeten. Im folgenden XPath-Ausdruck wird der Teilwert „sub“ anstelle der Schaltfläche „Senden“ verwendet. Es ist zu beobachten, dass das Element erfolgreich gefunden wurde.

Der vollständige Wert von „Type“ ist „submit“, es wird jedoch nur der Teilwert „sub“ verwendet.

Xpath=//*[contains(@type,'sub')]

Der vollständige Wert von „name“ ist „btnLogin“, es wird jedoch nur der Teilwert „btn“ verwendet.

Xpath=//*[contains(@name,'btn')]

Im obigen Ausdruck haben wir „name“ als Attribut und „btn“ als Teilwert verwendet, wie im folgenden Screenshot gezeigt. Dadurch werden zwei Elemente (LOGIN & RESET) gefunden, da ihr Attribut „name“ mit „btn“ beginnt.

Enthält()

Ebenso haben wir im folgenden Ausdruck die „id“ als Attribut und „message“ als Teilwert verwendet. Dadurch werden zwei Elemente gefunden („Benutzer-ID darf nicht leer sein“ und „Passwort darf nicht leer sein“), da das Attribut „id“ mit „Nachricht“ beginnt.

Xpath=//*[contains(@id,'message')]

Enthält()

Im folgenden Ausdruck haben wir den „Text“ des Links als Attribut und „hier“ als Teilwert verwendet, wie im folgenden Screenshot gezeigt. Dadurch wird der Link („hier“) gefunden, da der Text „hier“ angezeigt wird.

Xpath=//*[contains(text(),'here')]
Xpath=//*[contains(@href,'guru99.com')]

Enthält()

3) Verwendung von ODER und UND

Im OR-Ausdruck werden zwei Bedingungen verwendet, nämlich ob die erste Bedingung ODER die zweite Bedingung wahr sein soll. Dies gilt auch, wenn eine der Bedingungen zutrifft oder möglicherweise beide. Bedeutet, dass eine beliebige Bedingung wahr sein muss, um das Element zu finden.

Im folgenden XPath-Ausdruck werden die Elemente identifiziert, deren einzelne oder beide Bedingungen wahr sind.

Xpath=//*[@type='submit' or @name='btnReset']

Hervorhebung beider Elemente als „LOGIN“-Element mit dem Attribut „Typ“ und „RESET“-Element mit dem Attribut „Name“.

Verwendung von ODER & UND

Im AND-Ausdruck werden zwei Bedingungen verwendet. Beide Bedingungen müssen wahr sein, um das Element zu finden. Das Element kann nicht gefunden werden, wenn eine Bedingung falsch ist.

Xpath=//input[@type='submit' and @name='btnLogin']

Im folgenden Ausdruck wird das Element „LOGIN“ hervorgehoben, da es sowohl das Attribut „Typ“ als auch „Name“ hat.

Verwendung von ODER & UND

4) Xpath beginnt mit

XPath beginnt mit() ist eine Funktion zum Suchen des Webelements, dessen Attributwert bei der Aktualisierung oder durch andere dynamische Vorgänge auf der Webseite geändert wird. Bei dieser Methode wird der Starttext des Attributs abgeglichen, um das Element zu finden, dessen Attributwert sich dynamisch ändert. Sie können auch Elemente finden, deren Attributwert statisch ist (keine Änderungen).

Beispiel: Angenommen, die ID eines bestimmten Elements ändert sich dynamisch wie folgt:

Id=“ message12″

Id=“ message345″

Id=“ message8769″

und so weiter.. aber der ursprüngliche Text ist derselbe. In diesem Fall verwenden wir den Start-with-Ausdruck.

Im folgenden Ausdruck gibt es zwei Elemente mit einer ID, die mit „Nachricht“ beginnt (z. B. „Benutzer-ID darf nicht leer sein“ und „Passwort darf nicht leer sein“). Im folgenden Beispiel findet XPath diejenigen Elemente, deren „ID“ mit „Nachricht“ beginnt.

Xpath=//label[starts-with(@id,'message')]

Xpath beginnt mit

5) XPath Text()-Funktion

Der XPath text()-Funktion ist eine integrierte Funktion von Selenium Webdriver, die zum Auffinden von Elementen basierend auf dem Text eines Webelements verwendet wird. Es hilft dabei, die genauen Textelemente zu finden und lokalisiert die Elemente innerhalb des Satzes von Textknoten. Die zu suchenden Elemente sollten in Stringform vorliegen.

In diesem Ausdruck finden wir mit der Textfunktion das Element mit der genauen Textübereinstimmung, wie unten gezeigt. In unserem Fall finden wir das Element mit dem Text „UserID“.

Xpath=//td[text()='UserID']

XPath Text()-Funktion

XPath-Achsenmethoden

Diese XPath-Achsenmethoden werden verwendet, um die COM zu findenplex oder dynamische Elemente. Im Folgenden werden wir einige dieser Methoden sehen.

Zur Veranschaulichung dieser XPath-Achsenmethode verwenden wir die Demo-Site der Guru99-Bank.

1) Following

Wählt alle Elemente im Dokument des aktuellen Knotens aus () [Benutzer-ID-Eingabe box ist der aktuelle Knoten], wie im folgenden Bildschirm gezeigt.

Xpath=//*[@type='text']//following::input

Following

Es gibt 3 „Eingabe“-Knoten, die mit „follo“ übereinstimmenwing”Achsen-Passwort, Login und Reset-Taste. Wenn Sie sich auf ein bestimmtes Element konzentrieren möchten, können Sie die folgende XPath-Methode verwenden:

Xpath=//*[@type='text']//following::input[1]

Sie können den XPath entsprechend der Anforderung ändern, indem Sie [1],[2]…………usw. eingeben.

Mit der Eingabe „1“ findet der folgende Screenshot den bestimmten Knoten, der als „Passwort“-Eingabe gilt box Element.

Following

2) Vorfahr

Die Vorfahren-Achse wählt alle Vorfahren-Elemente (Großeltern, Eltern usw.) des aktuellen Knotens aus, wie im folgenden Bildschirm gezeigt.

Im folgenden Ausdruck finden wir das Vorfahrenelement des aktuellen Knotens („ENTERPRISE TESTING“-Knoten).

Xpath=//*[text()='Enterprise Testing']//ancestor::div

Vorfahr

Es gibt 13 „div“-Knoten, die mithilfe der „Vorfahren“-Achse übereinstimmen. Wenn Sie sich auf ein bestimmtes Element konzentrieren möchten, können Sie den folgenden XPath verwenden, in dem Sie die Nummer 1, 2 entsprechend Ihren Anforderungen ändern:

Xpath=//*[text()='Enterprise Testing']//ancestor::div[1]

Sie können den XPath entsprechend der Anforderung ändern, indem Sie [1], [2]………… usw. eingeben.

3) Kind

Wählt alle untergeordneten Elemente des aktuellen Knotens (Java) aus, wie im folgenden Bildschirm gezeigt.

Xpath=//*[@id='java_technologies']//child::li

Kind

Es gibt 71 „li“-Knoten, die mithilfe der „untergeordneten“ Achse übereinstimmen. Wenn Sie sich auf ein bestimmtes Element konzentrieren möchten, können Sie den folgenden XPath verwenden:

Xpath=//*[@id='java_technologies']//child::li[1]

Sie können den xpath je nach Anforderung ändern, indem Sie [1],[2]…………usw. eingeben.

4) Vorhergehend

Wählen Sie alle Knoten aus, die vor dem aktuellen Knoten liegen, wie im folgenden Bildschirm gezeigt.

Im folgenden Ausdruck werden alle Eingabeelemente vor der Schaltfläche „LOGIN“ identifiziert Benutzeridentifikation und Passwort Eingabeelement.

Xpath=//*[@type='submit']//preceding::input

Vorhergehend

Es gibt zwei „Eingabe“-Knoten, die mithilfe der „vorhergehenden“ Achse übereinstimmen. Wenn Sie sich auf ein bestimmtes Element konzentrieren möchten, können Sie den folgenden XPath verwenden:

Xpath=//*[@type='submit']//preceding::input[1]

Sie können den xpath je nach Anforderung ändern, indem Sie [1],[2]…………usw. eingeben.

5) Following-Geschwister

Wählen Sie Folgendes auswing Geschwister des Kontextknotens. Geschwister befinden sich auf derselben Ebene des aktuellen Knotens, wie im folgenden Bildschirm gezeigt. Das Element wird nach dem aktuellen Knoten gefunden.

xpath=//*[@type='submit']//following-sibling::input

Following-Geschwister

Ein Eingabeknoten-Matching mithilfe von „following-Geschwister“-Achse.

6) Eltern

Wählt den übergeordneten Knoten des aktuellen Knotens aus, wie im folgenden Bildschirm gezeigt.

Xpath=//*[@id='rt-feature']//parent::div

Elternteil

Es gibt 65 „div“-Knoten, die mithilfe der „parent“-Achse übereinstimmen. Wenn Sie sich auf ein bestimmtes Element konzentrieren möchten, können Sie den folgenden XPath verwenden:

Xpath=//*[@id='rt-feature']//parent::div[1]

Sie können den XPath entsprechend der Anforderung ändern, indem Sie [1],[2]…………usw. eingeben.

7) Selbst

Wählt den aktuellen Knoten oder „selbst“ aus, was den Knoten selbst angibt, wie im folgenden Bildschirm gezeigt.

Selbst

Ein Knotenabgleich mithilfe der „Selbst“-Achse. Es findet immer nur einen Knoten, da dieser ein Selbstelement darstellt.

Xpath =//*[@type='password']//self::input

8) Nachkomme

Wählt die Nachkommen des aktuellen Knotens aus, wie im folgenden Bildschirm gezeigt.

Im folgenden Ausdruck werden alle Elementnachkommen des aktuellen Elements (Rahmenelement „Hauptkörper umgeben“) identifiziert, d. h. unterhalb des Knotens (untergeordneter Knoten, Enkelknoten usw.).

Xpath=//*[@id='rt-feature']//descendant::a

Nachkomme

Es gibt 12 „Link“-Knoten, die mithilfe der „Abkömmlings“-Achse übereinstimmen. Wenn Sie sich auf ein bestimmtes Element konzentrieren möchten, können Sie den folgenden XPath verwenden:

Xpath=//*[@id='rt-feature']//descendant::a[1]

Sie können den XPath entsprechend der Anforderung ändern, indem Sie [1],[2]…………usw. eingeben.

Zusammenfassung

XPath ist erforderlich, um ein Element auf der Webseite zu finden und eine Operation für dieses bestimmte Element durchzuführen.

  • Es gibt zwei Arten von Selen-XPath:
    • Absoluter XPath
    • Relativer XPath
  • XPath-Achsen sind die Methoden, mit denen dynamische Elemente gefunden werdenwise Mit der normalen XPath-Methode nicht zu finden
  • Der XPath-Ausdruck wählt Knoten oder Knotenlisten auf der Grundlage von Attributen wie ID, Name, Klassenname usw. aus dem XML-Dokument aus.

Überprüfen Sie auch: - Selenium-Tutorial für Anfänger: Lernen Sie WebDriver in 7 Tagen