Beherrschen von XPath in Selenium: So lokalisieren Sieate verschiedenste Komponenten
Testingenieure sind im Softwareentwicklungslebenszyklus von entscheidender Bedeutung, da sie sicherstellen, dass ein Team fehlerfreie und funktionierende Anwendungen liefert. Diese Ingenieure durchlaufen die Anwendungen verschiedene Tests, bevor sie versandt oder für die Benutzer bereit erklärt werden können.
Tester sollten über Geschick und Ortungskompetenz verfügenate und mit Webelementen interagieren. Selenium ist eines der am häufigsten verwendeten Testautomatisierungstools moderner Entwicklungsteams. Dieses Tool besteht aus vier Komponenten; Selengitter, Selenium WebDriver, Selenium IDE und Selenium RC.
Unser heutiger Fokus liegt auf Selenium WebDriver, da dieser XPath enthält. In diesem Artikel wird XPath definiert, die grundlegende XPath-Syntax erläutert und veranschaulichtate wie man XPath in Selenium macht.
Was ist XPath

XPath (XML Path Language) ist eine Abfragesprache zum Auswählen und Navigieren von Attributen und Elementen in XML-Dokumenten. XPath definiert einen Pfadausdruck und bietet eine Möglichkeit, bestimmte Teile eines XML-Dokuments anzusprechen und Informationen daraus abzurufen.
Seine Syntax ähnelt einem Dateisystempfad. Es verfügt außerdem über Funktionen und Symbole, die die Auswahl von Elementen anhand ihrer Attribute und Hierarchie erleichtern. Sie können XPath mit Technologien wie XML, HTML und XSLT verwenden extraCT und Manipulate Daten.
Warum XPath verwenden?
- Es ist flexibel: Im Gegensatz zu CSS-Selektoren, die nur lokalisieren könnenate Elemente mithilfe von Tag-Namen, ID oder Klasse können Sie mit XPath lokalisierenate Elemente, die andere Attribute verwenden.
- Männlichsable: Sie können Ihren XPath in Variablen speichern und in Ihrem Code wiederverwenden.
- Präzise Knotenauswahl: XPath bietet eine standardisierte Möglichkeit, auf bestimmte Elemente in einem Webdokument abzuzielen.
Grundlegende Syntax von XPath
Mit XPath können Sie mithilfe des DOM jedes Element auf einer Webseite finden. Bevor wir jedoch die Syntax überprüfen, müssen wir die folgenden XPath-Ausdrücke verstehen;
Ausdruck | Beschreibung |
Knotenname/Tagname | Wählt alle Knoten mit dem Namen „Knotenname“/„Tagname“ aus. |
/ | Wählt vom Wurzelknoten aus |
// | Wählt Knoten im aktuellen Dokument aus dem aktuellen Knoten aus, der der Auswahl entspricht, unabhängig davon, wo sie sich befinden |
@ | Wählt Attribute aus |
.. | Wählt den übergeordneten Knoten des aktuellen Knotens aus |
. | Wählt den aktuellen Knoten aus |
Die Standardsyntax für XPath lautet;
XPath=//tagname[@attribute='value']
Wie Sie sehen können, beginnt die Syntax mit einem doppelten Schrägstrich (//), der mit dem aktuellen Knoten beginnt, der durch den Tag-/Knotennamen definiert ist.
Absoluter XPath vs. relativer XPath
Beim Umgang mit XPath haben wir zwei Möglichkeiten; Absoluter XPath und relativer XPath;
Absoluter XPath
Ein absoluter XPath ist ein direkter Pfad vom Stamm zum gewünschten Element. Sie beginnen mit dem Wurzelknoten und enden mit dem Zielknoten.
Sie können ein HTML-Dokument mit folgendem Inhalt haben:
<!DOCTYPE html>
<html>
<head>
<title>Geekflare</title>
</head>
<body>
<div>
<h1>Welcome to Geekflare</h1>
</div>
</body>
</html>
Wenn wir lokalisieren wollenate das Element mit dem Inhalt „Willkommen bei Geekflare“, Sie werden diesem Weg folgen;
/html/body/div/h1
Im obigen Dokument haben wir;
- Der HTML-Code als Wurzelknoten:
/html
- Der Körper ist ein übergeordneter Knoten:
/html/body
- Das div als untergeordnetes Element des Körperknotens:
/html/body/div
- Das h1 als Kind des div-Knotens:
/html/body/div/h1
Um das innerste Element zu erreichen, muss man diesem Weg folgen.
Wann sollte Absolute XPath verwendet werden?
Absolute XPath folgt einem „spezifischen“ Pfad. Es passt daher perfekt, wenn Sie mehrere Elemente mit ähnlichen Attributen auf einer Seite haben, und stellt sicher, dass Sie genau auf die Elemente in einem Dokument abzielen.
XPath reagiert jedoch überempfindlich auf Änderungen in der Struktur des HTML-Dokuments. Daher kann eine einfache Änderung Ihren Absolute XPath beschädigen.
Relativer XPath
Der relative XPath beginnt bei einem beliebigen Knoten und endet beim Zielknoten. Dieser Pfad wird von Änderungen im Dokument nicht beeinflusst und ist daher in den meisten Fällen vorzuziehen. Mit Relative XPath können Sie lokalisierenate Elemente aus einem beliebigen Teil des Dokuments. Der relative XPath-Ausdruck beginnt mit doppelten Schrägstrichen „//“.
Wenn wir das HTML-Dokument verwenden, können wir lokalisierenate unser H1 mit der Aufschrift „Willkommen bei Geekflare";
<!DOCTYPE html>
<html>
<head>
<title>Geekflare</title>
</head>
<body>
<div>
<h1>Welcome to Geekflare</h1>
</div>
</body>
</html>
Unser relativer XPath zu h1 wird sein;
//body/div/h1
Wann sollte Relative XPath verwendet werden?
Sie sollten Relative XPath verwenden, wenn Sie ein Gleichgewicht zwischen Flexibilität und Spezifität suchen. Dieser Pfad ist gegenüber Änderungen im HTML-Dokument widerstandsfähig, da die Beziehung zwischen den Elementen spezifisch bleibt.
Ortate Elemente mit XPath in Selenium
Selenium ist ein Open-Source-Framework, das Benutzern die Automatisierung ermöglichtate Web browsers. Das Framework verfügt über eine Sammlung von Bibliotheken und Tools, die Testern helfen, automatisch mit Webelementen zu interagierenally und systematischally.
Angenommen, wir haben ein Webdokument, das eine Liste von Liedern wie folgt enthält;
<!DOCTYPE html>
<html>
<head>
<title>Song Library</title>
</head>
<body>
<h1>Song Library</h1>
<ul class="song-list">
<li class="song" title="Song Title 1">Song 1 - Artist 1</li>
<li class="song" title="Song Title 2">Song 2 - Artist 2</li>
<li class="song" title="Song Title 3">Song 3 - Artist 1</li>
<li class="song" title="Song Title 4">Song 4 - Artist 3</li>
</ul>
</body>
</html>
- Unser Wurzelknoten ist .
- Wir haben als unser übergeordneter Knoten.
- Wir haben als Kind von .
- Wir haben als Kind von .
- Wir haben als Kind von .
Wir können im obigen HTML-Dokument verschiedene XPath-Locators verwenden. Wir können zum Beispiel lokalisierenate Elemente nach ID, Name, Klassenname, enthält, Texte, endet mit und beginnt mit und viele andere Locators. Sie können Selenium mit verschiedenen Programmiersprachen verwenden. Wir werden Python zur Demonstration verwendenate.
Ortate nach Index
Vorausgesetzt, wir wollen lokalisierenate Song Nummer 3, wir können diesen Code haben;
third_song = driver.find_element_by_xpath("//li[@class='song'][3]")
print("Third Song:", third_song.text)
Wir haben Relative XPath verwendet und beginnen mit dem Knoten „li“. Wenn Selen locates die third Wenn Sie ein Lied auf unserer Liste auswählen, wird dessen Text gedruckt.
Ortate nach Attribut
Wir können einen XPath haben, der nach allen Songs von „Künstler 1“ sucht und deren Titel ausgibt. Unser Code kann wie folgt sein;
songs_by_artist1 = driver.find_elements_by_xpath("//li[contains(@class, 'song') and contains(text(), 'Artist 1')]")
print("Songs by Artist 1:")
for song in songs_by_artist1:
print(song.text)
Ortate per Text
Dieser Locator hilft Ihnen, Elemente mit bestimmtem Text zu finden. Wir können nach einem Lied mit dem Text „Lied 4“ suchen und dessen Text ausdrucken. Wir können diesen Locator mit diesem Code darstellen;
song_with_text = driver.find_element_by_xpath("//li[contains(text(), 'Song 4')]")
print("Song with Text:", song_with_text.text)
XPath-Achsen
Die bisher besprochenen Ansätze funktionieren perfekt mit einfachen Webseiten. Es gibt jedoch Fälle, in denen XPath-Elementsuchmethoden wie „Text“, „ID“, „Klassenname“ und „Name“ nicht funktionieren.
XPath-Achsen werden für dynamische Inhalte verwendet, bei denen normale Locators nicht funktionieren. Hier, du locate Elemente basierend auf ihrer Beziehung zu anderen Elementen. Dies sind einige der gebräuchlichen XPath-Achsen-Locators;
Vorfahr
Die Ancestor-Axis-Methode eignet sich perfekt für den Umgang mit XML-Dokumenten mit stark verschachtelten Elementen. Sie können alle Vorgängerelemente wie Großeltern und Eltern des aktuellen Knotens vom nächsten zum entferntesten auswählen.
Wir können den folgenden Code haben;
<bookstore>
<book>
<title>The Great Gatsby</title>
<author>F. Scott Fitzgerald</author>
<genre>Fiction</genre>
</book>
<book>
<title>The Biggest Dilemma</title>
<author>George Orwell</author>
<genre>Dystopian</genre>
</book>
</bookstore>
Wenn wir alle Vorfahren des Elements „title“ für das Buch „The Biggest Dilemma“ auswählen möchten, können wir diese Ancestor Axis-Methode verwenden;
//title[text() = '1984']/ancestor::*
folgende
Die folgende Achsenmethode locates alle Knoten posten das schließende Tag des aktuellen Knotens. Diese Methode berücksichtigt nicht die Hierarchie oder den Standort ihrer Zielknoten. Wenn Sie beispielsweise ein XML-Dokument oder eine Webseite mit mehreren Abschnitten haben, können Sie ein Element identifizieren, das nach einem bestimmten Abschnitt erscheint, ohne durch die gesamte Baumstruktur navigieren zu müssen.
Elternteil
Die Methode „Parent Axis“ in XPath wählt das übergeordnete Element des aktuellen Knotens aus. Sie können den folgenden Pfad verwenden, um zu lokalisierenate der übergeordnete Knoten;
//tag[@attribute='value']/parent::tagName
Dieser Ansatz funktioniert, wenn die untergeordneten Elemente im aktuellen Knoten eindeutige Attribute haben, die Sie leicht finden könnenate, und Sie möchten sich bei den Eltern erkundigen.
Kind
Die Methode „Child Axis“ in XPath wählt alle untergeordneten Elemente des aktuellen Knotens aus. Es bleibt eine der beliebtesten XPath-Achsenmethoden, da es dabei hilft, untergeordnete Knoten eines bestimmten Elements auszuwählen.
Betrachten Sie diesen Code.
<section id='text'>
<p>Paragraph one</p>
<p>Paragraph two</p>
<p>Paragraph three</p>
<p>Paragraph four</p>
</section>
Wir können lokalisierenate alle 'p'-Elemente in unserem Code verwenden diese Achse;
//section[@id='text']/child::p
Häufig gestellte Fragen (FAQs)
CSS-Selektoren können Elemente nur anhand ihrer ID, ihres Tag-Namens und ihrer Klasse finden. Andererseits können Sie XPath zum Lokalisieren verwendenate Elemente basierend auf ihrer Position, ihrem Textinhalt und anderen Attributen in der HTML-Struktur. Sie können XPath-Ausdrücke auch in Variablen speichern und in Ihrer Anwendung wiederverwenden.
Sie können XPath mit jeder Sprache verwenden, die Selenium unterstützt. Sie können Ihre Skripte in JavaScript, Java, Python, Ruby, C# und PHP schreiben.
Sie können CSS-Selektoren, Bilderkennung oder die integrierten Locators von Selenium als Alternative zu XPath verwenden. CSS-Selektoren sind am häufigsten; Sie können Elemente anhand ihres Tag-Namens, ihrer ID oder ihrer Klasse finden. Mit der Bilderkennung können Sie lokalisierenate Elemente basierend auf ihren Bildern. Die integrierten Ortungsgeräte des Selenium sind so konzipiert, dass sie einfach zu bedienen sind.
Schlussfolgerung
Sie können XPath jetzt in Selenium definierenate zwischen absolutem und relativem XPath und locate Elemente mit unterschiedlichen XPath-Locators. Die Wahl des Locators hängt von der Art des Inhalts und Ihren Endzielen ab.
Lesen Sie unseren Artikel über Selen Fragen im Vorstellungsgespräch wenn Sie Ihr nächstes Vorstellungsgespräch mit Bravour meistern möchten.