XPath ein Selenium: Lernprogramm

XPath ein Selenium

Worin ist XPath enthalten? Selenium?

XPath ein Selenium 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.

In Selenium Bei der Automatisierung wird, falls die Elemente nicht mit allgemeinen Selektoren wie id, class, name usw. gefunden werden, XPath verwendet, um ein Element auf der Webseite zu finden.

In diesem Tutorial lernen wir XPath und verschiedene XPath-Ausdrรผcke kennen, um komplexe oder dynamische Elemente zu finden, deren Attribute sich beim Aktualisieren oder bei 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 grundlegende Format 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 die folgende XPath-รœbung auf diesem https://demo.guru99.com/test/selenium-xpath.html

Klicken Sie auf werden auf dieser Seite erlรคutert 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 einem doppelten Schrรคgstrich (//). Es kann Elemente รผberall auf der Webseite suchen, d. h. Sie mรผssen keinen langen XPath schreiben und kรถnnen in der Mitte der HTML-DOM-Struktur beginnen. Relativer XPath ist immer vorzuziehen, 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 auf werden auf dieser Seite erlรคutert 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 Methoden zum Auffinden dynamischer Elemente, die mit normalen XPath-Methoden ohne ID, Klassennamen, Namen usw. nicht gefunden werden kรถnnen. XPath in Selenium enthรคlt mehrere Methoden wie โ€žContainsโ€œ, โ€žANDโ€œ, โ€žAbsolute XPathโ€œ und โ€žRelative XPathโ€œ, um dynamische Elemente basierend auf verschiedenen Attributen und Bedingungen zu identifizieren und zu lokalisieren.

Achsenmethoden werden verwendet, um Elemente zu finden, die sich beim Aktualisieren oder bei anderen Vorgรคngen dynamisch รคndern. Es gibt einige Achsenmethoden, die hรคufig in Selenium Webtreiber wie Kind, Elternteil, Vorfahre, Geschwister, Vorgรคnger, Selbst usw.

So schreiben Sie dynamischen XPath hinein Selenium WebTreiber

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 https://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='https://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: โ€žLOGINโ€œ-Element mit dem Attribut โ€žtypeโ€œ 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, die zum Suchen von Webelementen verwendet wird, deren Attributwert sich beim Aktualisieren oder durch andere dynamische Vorgรคnge auf der Webseite รคndert. Bei dieser Methode wird der Anfangstext des Attributs abgeglichen, um das Element zu finden, dessen Attributwert sich dynamisch รคndert. Sie kรถnnen auch Elemente finden, deren Attributwert statisch ist (sich nicht รคndert).

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

Das XPath text()-Funktion ist eine integrierte Funktion des Selenium-Webtreibers, die zum Lokalisieren von Elementen basierend auf dem Text eines Webelements verwendet wird. Sie hilft dabei, die genauen Textelemente zu finden und lokalisiert die Elemente innerhalb der Menge der Textknoten. Die zu lokalisierenden Elemente sollten in Zeichenfolgenform 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 komplexe oder dynamische Elemente zu finden. Im Folgenden sehen wir uns einige dieser Methoden an.

Zur Veranschaulichung dieser XPath-Achsenmethode werden wir Folgendes verwenden: GuruDemo-Website der 99 Bank.

1) Folgen

Wรคhlt alle Elemente im Dokument des aktuellen Knotens aus () [Das UserID-Eingabefeld ist der aktuelle Knoten], wie im folgenden Bildschirm gezeigt.

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

folgende

Es gibt 3 โ€žEingabeโ€œ-Knoten, die mithilfe der โ€žfolgendenโ€œ Achsen รผbereinstimmen: Passwort, Login und Reset-Button. 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 das Eingabefeldelement โ€žPasswortโ€œ ist.

folgende

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 aus (Java), 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) Nรคchstes Geschwister

Wรคhlen Sie die folgenden Geschwister des Kontextknotens aus. Geschwister befinden sich auf derselben Ebene wie der aktuelle Knoten, wie im folgenden Bildschirm gezeigt. Das Element wird nach dem aktuellen Knoten gefunden.

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

Nรคchstes Geschwister

Ein Eingabeknoten wird mithilfe der โ€žfolgenden Geschwisterโ€œ-Achse abgeglichen.

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.

Hรคufig gestellte Fragen

XPath (XML Path Language) wird verwendet, um durch Elemente und Attribute in einem XML-Dokument zu navigieren. XML oder ein HTML-Dokument. Es hilft, bestimmte Knoten zu identifizieren und abzurufen, wodurch es beim Web-Scraping unerlรคsslich ist.ping, XML-Datenverarbeitung und automatisierte Testwerkzeuge wie Selenium zum Auffinden von Webelementen.

Verwenden Sie XPath, wenn Sie komplexe oder dynamisch verรคnderliche Webelemente finden mรผssen, die sich nicht ohne Weiteres mit einfacheren Selektoren wie ID oder Klassennamen identifizieren lassen. Es eignet sich ideal zum Navigieren in hierarchischen Strukturen, zum Auswรคhlen von Knoten anhand von Attributen und zum Umgang mit Elementen ohne eindeutige Kennungen.

XPath-Locators sind Ausdrรผcke, die Elemente innerhalb der Dokumentstruktur identifizieren. Sie geben Pfade zu Knoten anhand von Attributen, Text, Hierarchie oder Position an. Gรคngige Locator-Strategien umfassen die Auswahl von Elementen anhand von Tag-Namen, Attributwerten, Teilรผbereinstimmungen oder logischen Kombinationen von Bedingungen.

XPath gibt es in zwei Typen: Absoluter XPath und Relativer XPath.

  • Absoluter XPath Beginnt beim Wurzelknoten (z. B. /html/body/โ€ฆ) und gibt den vollstรคndigen Pfad an.
  • Relativer XPath Es beginnt an jedem beliebigen Knoten (z. B. //div[@id='content']) und ist flexibler und wartungsfreundlicher.

Ein einfacher Schrรคgstrich (/) wรคhlt Knoten direkt unterhalb des Wurzelknotens bzw. des aktuellen Knotens aus und stellt somit einen absoluten Pfad dar. Ein doppelter Schrรคgstrich (//) durchsucht Knoten an beliebiger Stelle im Dokument, unabhรคngig von der Hierarchie, und ermรถglicht so ein flexibleres Auffinden von Elementen, ohne den vollstรคndigen Pfad angeben zu mรผssen.

Ja, XPath unterscheidet zwischen GroรŸ- und Kleinschreibung. Elementnamen, Attributnamen und Werte mรผssen exakt mit der Schreibweise im Dokument รผbereinstimmen. Beispielsweise werden `//div` und `//DIV` unterschiedlich behandelt. Um die GroรŸ-/Kleinschreibung zu ignorieren, kรถnnen Funktionen wie `translate()` in XPath-Ausdrรผcken verwendet werden.

Zusammenfassung

XPath ist erforderlich, um ein Element auf der Webseite zu finden und eine Operation mit diesem bestimmten Element durchzufรผhren.

  • Es gibt zwei Arten von Selenium XPath:
    • Absoluter XPath
    • Relativer XPath
  • XPath-Achsen sind die Methoden, die verwendet werden, um dynamische Elemente zu finden, die sonst mit der normalen XPath-Methode nicht gefunden werden kรถnnen
  • 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: Erlernen Sie WebDriver in 7 Tagen

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: