Wenn in der Selenium-Automatisierung die Elemente von den allgemeinen Locators wie ID, Klasse, Name usw. nicht 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 komplexen oder dynamischen Elemente zu finden, deren Attribute sich beim Aktualisieren oder bei Operationen dynamisch ändern.
In diesem XPath-Tutorial lernen Sie:
- Was ist XPath?
- Arten von X-Pfad
- Absoluter XPath
- Relativer XPath
- Grundlegender XPath
- Enthält ()
- Verwenden von OR & AND
- Beginnt mit der Funktion
- Text()
- XPath-Achsenmethoden
- Im Folgenden
- Vorfahr
- Kind
- Vorangehend
- Nachgeschwister
- Elternteil
- Selbst
- Nachfahre
Was ist XPath in Selen?
XPath in Selenium ist ein XML-Pfad, der für die Navigation durch die HTML-Struktur der Seite verwendet wird. Es ist eine Syntax oder Sprache zum Suchen eines Elements auf einer Webseite mithilfe des 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 Elements auf einer Webseite zu ermitteln.
Das Grundformat von XPath in Selen wird unten mit einem Screenshot erläutert.
Grundformat von XPath
Syntax für XPath-Selen:
XPath enthält den Pfad des Elements auf der Webseite. Die Standard-XPath-Syntax zum Erstellen von XPath lautet.
Xpath = // tagname [@ attribute = 'value']
- //: Aktuellen Knoten auswählen.
- Tagname: 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-Locators | Finden Sie verschiedene Elemente auf der Webseite |
ICH WÜRDE | So finden Sie das Element anhand der ID des Elements |
Klassenname | So finden Sie das Element anhand des Klassennamens des Elements |
Name | So finden Sie das Element anhand des Namens des Elements |
Link Text | So finden Sie das Element anhand des Textes des Links |
XPath | XPath ist erforderlich, um das dynamische Element zu finden und zwischen verschiedenen Elementen der Webseite zu wechseln |
CSS-Pfad | Der CSS-Pfad sucht auch nach Elementen ohne Namen, Klasse oder ID. |
Arten von X-Pfad
Es gibt zwei Arten von XPath:
1) Absoluter XPath
2) Relativer XPath
Absoluter XPath:
Es ist der direkte Weg, um das Element zu finden, aber der Nachteil des absoluten XPath ist, dass XPath fehlschlägt, wenn Änderungen am Pfad des Elements vorgenommen werden.
Das Hauptmerkmal von XPath ist, dass es mit dem einzelnen Schrägstrich (/) beginnt. Dies bedeutet, dass Sie das Element aus dem Stammknoten auswählen können.
Unten sehen Sie das Beispiel eines absoluten xpath-Ausdrucks des im folgenden Bildschirm gezeigten Elements.
HINWEIS: Sie können die folgende XPath-Übung unter http://demo.guru99.com/test/selenium-xpath.html üben
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
Relativer Xpath:
Relativer Xpath beginnt in der Mitte der HTML-DOM-Struktur. Es beginnt mit einem doppelten Schrägstrich (//). Es kann Elemente überall auf der Webseite suchen, bedeutet, dass Sie keinen langen xpath schreiben müssen und Sie können von der Mitte der HTML-DOM-Struktur aus beginnen. 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 angezeigt wird. Dies ist das übliche Format, mit dem XPath Elemente findet.
Klicken Sie hier, wenn das Video nicht zugänglich ist
Relativer XPath: // div [@ class = 'Featured-Box Cloumnsize1'] // h4 [1] // b [1]
Relativer XPath
Was sind XPath-Achsen?
XPath-Achsen durchsuchen verschiedene Knoten im XML-Dokument vom aktuellen Kontextknoten. XPath-Achsen sind die Methoden zum Auffinden dynamischer Elemente, die ansonsten mit einer normalen XPath-Methode ohne ID, Klassenname, Name usw. nicht möglich sind.
Achsenmethoden werden verwendet, um diejenigen Elemente zu finden, die sich beim Aktualisieren oder bei anderen Vorgängen dynamisch ändern. Es gibt nur wenige Achsenmethoden, die in Selenium Webdriver häufig verwendet werden, wie Kind, Elternteil, Vorfahr, Geschwister, Vorgänger, Selbst usw.
Verwenden von XPath Umgang mit komplexen und dynamischen Elementen in Selen
1) Grundlegender XPath:
XPath-Ausdruck Wählen Sie Knoten oder eine Liste von Knoten auf der Grundlage von Attributen wie ID, Name, Klassenname usw. aus dem XML-Dokument aus, wie unten dargestellt.
Xpath = // Eingabe [@ name = 'uid']
Hier ist ein Link, um auf die Seite http://demo.guru99.com/test/selenium-xpath.html zuzugreifen
Grundlegender XPath
Einige grundlegendere xpath-Ausdrücke:
Xpath = // Eingabe [@ type = 'text']Xpath = // label [@ id = 'message23']Xpath = // Eingabe [@ value = 'RESET']Xpath = // * [@ class = 'barone']Xpath = // a [@ href = 'http: //demo.guru99.com/']Xpath = //img[@src='//cdn.guru99.com/images/home/java.png.webp ']
2) Enthält ():
Contains () ist eine Methode, die im XPath-Ausdruck verwendet wird. Es wird verwendet, wenn sich der Wert eines Attributs dynamisch ändert, z. B. Anmeldeinformationen.
Die Contain-Funktion kann das Element mit Teiltext finden, wie im folgenden XPath-Beispiel gezeigt.
In diesem Beispiel haben wir versucht, das Element zu identifizieren, indem wir nur den Teiltextwert des Attributs verwendet haben. Im folgenden XPath-Ausdruck wird anstelle der Schaltfläche "Senden" der Teilwert "sub" verwendet. Es kann beobachtet werden, dass das Element erfolgreich gefunden wurde.
Der vollständige Wert von 'Typ' ist 'Senden', verwendet jedoch nur den Teilwert 'Sub'.
Xpath = // * [enthält (@ type, 'sub')]
Der vollständige Wert von 'name' ist 'btnLogin', verwendet jedoch nur den Teilwert 'btn'.
Xpath = // * [enthält (@ name, 'btn')]
Im obigen Ausdruck haben wir den 'Namen' als Attribut und 'btn' als Teilwert genommen, wie im folgenden Screenshot gezeigt. Hier finden Sie 2 Elemente (LOGIN & RESET), da das Attribut 'name' mit 'btn' beginnt.
In ähnlicher Weise haben wir im folgenden Ausdruck die 'id' als Attribut und 'message' als Teilwert genommen. Hier finden Sie 2 Elemente ('Benutzer-ID darf nicht leer sein' & 'Passwort darf nicht leer sein'), da das Attribut 'Name' mit 'Nachricht' beginnt.
Xpath = // * [enthält (@ id, 'message')]
Im folgenden Ausdruck haben wir den "Text" des Links als Attribut und "hier" als Teilwert verwendet, wie im folgenden Screenshot gezeigt. Hier finden Sie den Link ('hier'), da der Text 'hier' angezeigt wird.
Xpath = // * [enthält (text (), 'here')]Xpath = // * [enthält (@ href, 'guru99.com')]
3) Verwenden von OR & AND:
Im OR-Ausdruck werden zwei Bedingungen verwendet, ob die 1. Bedingung ODER die 2. Bedingung wahr sein soll. Dies gilt auch, wenn eine Bedingung erfüllt ist oder beides. Bedeutet, dass eine beliebige Bedingung erfüllt sein sollte, um das Element zu finden.
Im folgenden XPath-Ausdruck werden die Elemente identifiziert, deren einzelne oder beide Bedingungen erfüllt sind.
Xpath = // * [@ type = 'submit' oder @ name = 'btnReset']
Hervorheben beider Elemente als "LOGIN" -Element mit dem Attribut "Typ" und "RESET" -Element mit dem Attribut "Name".
Im AND-Ausdruck werden zwei Bedingungen verwendet, beide Bedingungen sollten wahr sein, um das Element zu finden. Es kann kein Element gefunden werden, wenn eine Bedingung falsch ist.
Xpath = // Eingabe [@ type = 'submit' und @ name = 'btnLogin']
Markieren Sie im folgenden Ausdruck das Element 'LOGIN', da es sowohl das Attribut 'Typ' als auch den Namen 'Name' hat.
4) Xpath Beginnt mit
XPath begin-with () ist eine Funktion zum Suchen des Webelements, dessen Attributwert beim Aktualisieren 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 der gleiche. In diesem Fall verwenden wir den Ausdruck Start mit.
Im folgenden Ausdruck gibt es zwei Elemente mit einer ID, die mit "message" beginnt (dh "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 [beginnt mit (@ id, 'message')]
5) XPath Text () Funktion
Die XPath-Funktion text () ist eine integrierte Funktion des Selenium-Webtreibers, mit der Elemente basierend auf dem Text eines Webelements gesucht werden. Es hilft, die genauen Textelemente zu finden und die Elemente innerhalb der Gruppe von Textknoten zu lokalisieren. Die zu lokalisierenden Elemente sollten in Zeichenfolgenform vorliegen.
In diesem Ausdruck mit Textfunktion finden wir 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']
6) XPath-Achsenmethoden:
Diese XPath-Achsenmethoden werden verwendet, um die komplexen oder dynamischen Elemente zu finden. Nachfolgend sehen wir einige dieser Methoden.
Zur Veranschaulichung dieser XPath-Achsenmethode verwenden wir die Guru99-Bank-Demo-Site.
a) Folgende:
Wählt alle Elemente im Dokument des aktuellen Knotens aus () [Benutzer-ID-Eingabefeld ist der aktuelle Knoten], wie im folgenden Bildschirm gezeigt.
Xpath = // * [@ type = 'text'] // folgende :: Eingabe
Es gibt 3 "Eingabeknoten", die mit dem "folgenden" Achsenkennwort, der Anmelde- und der Rücksetztaste übereinstimmen. Wenn Sie sich auf ein bestimmtes Element konzentrieren möchten, können Sie die folgende XPath-Methode verwenden:
Xpath = // * [@ type = 'text'] // folge :: input [1]
Sie können den XPath entsprechend den Anforderungen ändern, indem Sie [1], [2] eingeben.
… und so weiter.Mit der Eingabe als '1' findet der folgende Screenshot den bestimmten Knoten, der das Eingabefeldelement 'Passwort' ist.
b) Vorfahr:
Die Ahnenachse wählt alle Ahnenelemente (Großeltern, Eltern usw.) des aktuellen Knotens aus, wie im folgenden Bildschirm gezeigt.
Im folgenden Ausdruck finden wir das Vorfahrenelement des aktuellen Knotens (Knoten "ENTERPRISE TESTING").
Xpath = // * [text () = 'Enterprise Testing'] // ancestor :: div
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, bei dem Sie die Nummer 1, 2 gemäß Ihren Anforderungen ändern:
Xpath = // * [text () = 'Enterprise Testing'] // ancestor :: div [1]
Sie können den XPath entsprechend den Anforderungen ändern, indem Sie [1], [2] eingeben.
… und so weiter.c) Kind:
Wählt alle untergeordneten Elemente des aktuellen Knotens (Java) aus, wie im folgenden Bildschirm gezeigt.
Xpath = // * [@ id = 'java_technologies'] // child :: li
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 entsprechend den Anforderungen ändern, indem Sie [1], [2] eingeben.
… und so weiter.d) 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 "ANMELDEN" identifiziert, bei denen es sich um Benutzer-ID und Kennwort- Eingabeelement handelt.
Xpath = // * [@ type = 'submit'] // vor :: input
Es gibt 2 "Eingabeknoten", die unter Verwendung der "vorhergehenden" Achse übereinstimmen. Wenn Sie sich auf ein bestimmtes Element konzentrieren möchten, können Sie den folgenden XPath verwenden:
Xpath = // * [@ type = 'submit'] // vor :: input [1]
Sie können den xpath entsprechend den Anforderungen ändern, indem Sie [1], [2] eingeben.
… und so weiter.e) Nachgeschwister:
Wählen Sie die folgenden Geschwister des Kontextknotens aus. Geschwister befinden sich auf derselben Ebene des aktuellen Knotens wie im folgenden Bildschirm gezeigt. Es findet das Element nach dem aktuellen Knoten.
xpath = // * [@ type = 'submit'] // folgendes Geschwister :: Eingabe
Ein Eingangsknoten, der unter Verwendung der Achse "Folgegeschwister" übereinstimmt.
f) Elternteil:
Wählt das übergeordnete Element des aktuellen Knotens aus, wie im folgenden Bildschirm gezeigt.
Xpath = // * [@ id = 'rt-feature'] // parent :: div
Es gibt 65 "div" -Knoten, die mithilfe der "übergeordneten" 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 den Anforderungen ändern, indem Sie [1], [2] eingeben.
… und so weiter.g) Selbst:
Wählt den aktuellen Knoten aus oder "Selbst" bedeutet, dass der Knoten selbst angezeigt wird, wie im folgenden Bildschirm gezeigt.
Ein Knotenabgleich unter Verwendung der "Selbst" -Achse. Es findet immer nur einen Knoten, da er das Selbstelement darstellt.
Xpath = // * [@ type = 'password'] // self :: input
h) 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örperumrandung") identifiziert, dh unter dem Knoten (untergeordneter Knoten, Enkelknoten usw.).
Xpath = // * [@ id = 'rt-feature'] // Nachkomme :: a
Es gibt 12 "Link" -Knoten, die mithilfe der "Nachkommen" -Achse übereinstimmen. Wenn Sie sich auf ein bestimmtes Element konzentrieren möchten, können Sie den folgenden XPath verwenden:
Xpath = // * [@ id = 'rt-feature'] // Nachkomme :: a [1]
Sie können den XPath entsprechend den Anforderungen ändern, indem Sie [1], [2] eingeben.
… und so weiter.Zusammenfassung:
XPath ist erforderlich, um ein Element auf der Webseite zu finden, um eine Operation für dieses bestimmte Element auszuführen.
- Es gibt zwei Arten von Selen-XPath:
- Absoluter XPath
- Relativer XPath
- XPath-Achsen sind die Methoden zum Suchen dynamischer Elemente, die mit der normalen XPath-Methode sonst nicht gefunden werden können
- XPath-Ausdruck Wählen Sie Knoten oder eine Liste von Knoten anhand von Attributen wie ID, Name, Klassenname usw. aus dem XML-Dokument aus.