ultimate xpath writing cheat sheet tutorial with syntax
Top 20 Möglichkeiten, um Ultimate XPATH für JEDEN Typ von Webelementen zu schreiben (XPATH wird niemals ungültig sein):
Eine Webanwendung besteht aus verschiedenen Arten von Webelementen, z. B. Webelementen zum Klicken auf eine Schaltfläche, Eingeben von Webelementen zum Eingeben von Text, Dropdown-Liste, Optionsfeldern usw.
Diese Webelemente werden auch als Tags oder Knoten bezeichnet.
Wenn es um die Automatisierung von Webanwendungen geht, beginnt es mit dem Schreiben eines Automatisierungsskripts, das das Webelement findet, eine Aktion darauf ausführt, z. B. auf eine Schaltfläche klicken, Text in das Eingabefeld eingeben, ein Kontrollkästchen aktivieren, ein Optionsfeld auswählen, Scrollen Sie nach oben oder unten und überprüfen Sie schließlich das erwartete Verhalten nach der Aktion.
Was du lernen wirst:
- Wie ist XPath und wie sieht es aus?
- Top 20 Möglichkeiten, XPath für jedes Webelement zu schreiben
- # 1) Reverse Lookup
- # 2) Verwenden von Variablen und benutzerdefinierten Werten
- # 3) Verwenden von 'XML' -Tags, 'AND' usw.
- # 4) Verwenden von Attributen und Tabelle XPATH
- # 5) Verwenden von Attributen, Tabellen und Text
- # 6) Generieren von XPATH mit verschachtelten Attributen
- # 7) XPath-Generierung durch Kombinieren von Attributen, Divs und Schaltflächen
- # 8) XPATH Generieren mit CONTAINS, REVERSE LOOKUP usw.
- # 9) XPath-Generierung mit Relative, CONTAINS, REVERSE, FOLLOWING SIBLING usw.
- # 10) XPath-Generierung unter Verwendung von Attributen, Enthält, Umkehren, Vorherigem Geschwister, Divs und Span
- # 11) Verwenden von Attributen, XML-Tags usw.
- # 12) XPath-Generierung, indem nicht auf die gesamte Seite geschaut wird, sondern stattdessen auf alle Links und Enthält
- # 13) Verwenden von Contains und Attributen
- # 14) Verwenden von Attributen, Folgen von Geschwistern und Nachkommen
- # 15) Verwenden von Attributen, Folgen von Geschwistern, Nachkommen und Text
- # 16) Verwenden von Kopfzeile und Text
- # 17) Verwenden von Kopfzeilentext, Folgen von Geschwistern, Pfad usw.
- # 18) Verwenden von Attributen, Enthalten und Vorangehen von Geschwistern
- # 19) Suchen Sie nach einem Dropdown-Menü, indem Sie das ID-Attribut, einen bestimmten Text und die umgekehrte Suche verwenden
- # 20) Kombinieren Sie das Attribut 'id' und suchen Sie nach einem Link mit einem bestimmten Text
- Fazit
- Literatur-Empfehlungen
Wie ist XPath und wie sieht es aus?
Das Finden eines Elements ist wie das Finden eines Hauses auf der Karte. Die einzige Möglichkeit, das Haus eines Freundes ohne externe Hilfe zu finden, besteht darin, dass wir eine Karte haben und wissen, was zu finden ist (Haus).
Um diese Analogie in unserem Fall zu formulieren, wird die Karte als DOM (HTML-Tags, JavaScript usw.) verwendet, in dem alle Webelemente vorhanden sind, zusammen mit dem spezifischen Webelement, das wir finden möchten.
Wie öffnet man JSON-Dateien?
Sobald die eindeutige Adresse oder der eindeutige Pfad eines Elements gefunden wurde, führt das Automatisierungsskript basierend auf dem Testszenario einige Aktionen aus. Zum Beispiel, Sie möchten die URL der Seite überprüfen, die nach dem Klicken auf eine Schaltfläche geöffnet wird.
Es ist jedoch nicht einfach, eine eindeutige Adresse / einen eindeutigen Pfad eines Webelements zu finden, da es möglicherweise ähnliche Tags, dieselben Attributwerte und identische Pfade gibt, die es schwierig machen, eine genaue eindeutige Adresse für ein Webelement namens 'XPATH' zu erstellen.
Hier werden wir uns eingehend mit einigen großartigen und effektiven Techniken befassen, um gültige und einzigartige XPATH für jede Art von Webelement zu generieren.
Empfohlenes Lesen => Identifizieren von Webelementen mithilfe von XPath in Selen
Manchmal können Sie XPaths einfach mit Browser-Erweiterungen erstellen, aber in meinem Automatisierungstests Karriere habe ich unzählige Situationen erlebt, in denen herkömmliche Browsererweiterungen nicht funktionieren und Sie mit Ihrer eigenen Kreativität Ihre eigenen angepassten XPaths entwickeln müssen. Ich bin sicher, dass Sie ähnliche Situationen haben oder haben werden.
In diesem Tutorial werden wir uns die 20 besten Möglichkeiten ansehen, wie Sie den ultimativen XPath für ein Webelement erstellen können, sodass Ihr XPath auch dann immer gültig bleibt, wenn Ihr Code geändert wird (es sei denn, der Entwickler schreibt den gesamten Code neu Funktion / Modul).
Wenn Sie all diese Techniken kennen, werden Sie ein Meister des Schreibens Ihres eigenen XPaths und können Killer-XPaths mit sehr geringen Chancen schreiben, ungültig zu werden.
Beginnen wir zunächst mit dem Verständnis der XPath-Syntax und definieren die einzelnen Teile.
Das folgende Bild zeigt, wie XPath zusammen mit einer Beschreibung der einzelnen Teile aussehen wird:
- //: Wählen Sie den aktuellen Knoten wie Eingabe, Div usw. aus.
- Verlinke den Namen: Tagname des Webelements / Knotens
- @: Attribut auswählen
- Attribut: Attributname des Knotens / bestimmten Webelements
- Wert: Wert des Attributs
Ich möchte hier nur ein paar Tipps geben, dass mein Automatisierungstestskript in 80% der Fälle aufgrund von XPath fehlgeschlagen ist. Dies liegt daran, dass entweder mehrere Webelemente für den bereitgestellten XPath vorhanden sind oder XPath nicht gültig ist oder die Seite noch nicht geladen wurde.
Also, wenn Ihr Testfall fehlschlägt:
- Kopieren Sie Ihren XPath.
- Durchsuchen Sie es im Browser (F12 oder Entwickler-Tool-Fenster) im DOM, um zu überprüfen, ob es gültig ist oder nicht (siehe Abbildung unten).
Pro Typ 1: Stellen Sie sicher, dass es eindeutig ist und kein anderes Webelement angezeigt wird, wenn Sie zweimal im DOM suchen.
Pro Typ 2: Manchmal gibt es ein Zeitproblem, was bedeutet, dass Ihr Webelement / Ihre Webseite noch nicht geladen ist, während das Skript danach gesucht hat. Fügen Sie daher etwas Wartezeit hinzu und wiederholen Sie den Test.
Pro Typ 3: Versuchen Sie, das gesamte DOM zu drucken, bevor Sie nach dem Webelement suchen. Auf diese Weise können Sie anhand der Konsole feststellen, ob Ihr Webelement im DOM vorhanden ist oder nicht.
Bevor wir uns eingehend mit XPath befassen, möchte ich Ihnen Folgendes mitteilen: Wenn Sie direkten Zugriff auf das Entwicklungsteam haben oder wenn sich Ihr Team dort befindet, wo Sie sich befinden, bitten Sie Ihr Entwicklungsteam, Ihnen eindeutige IDs zur Verfügung zu stellen Jedes Webelement oder zumindest diejenigen, die Sie für die Automatisierung verwenden möchten, sparen viel Zeit.
Wenn dies nicht möglich ist, müssen Sie möglicherweise Ihre Kreativität einsetzen und Ihre eigenen angepassten XPaths entwickeln. Das werden wir jetzt lernen.
Top 20 Möglichkeiten, XPath für jedes Webelement zu schreiben
Lassen Sie uns tief in die 20 besten Wege zu einem Killer-XPath eintauchen.
# 1) Reverse Lookup
Angenommen, Sie möchten auf eine Schaltfläche klicken, und es gibt eine ähnliche Schaltfläche. Beide Schaltflächen haben ID-Attribute, sind jedoch dynamisch und keines der Attribute ist in beiden Schaltflächenelementen eindeutig.
Im folgenden Szenario möchten wir auf die Schaltfläche 'Einstellungen' von 'Test Interactive' klicken.
Code
Wenn Sie sich die Schaltflächen „Einstellungen“ ansehen, sind beide Codes ähnlich. Wenn Sie herkömmliche Methoden wie ID, Name, Wert, Enthalten usw. verwenden, funktioniert beispielsweise keine davon.
// * [enthält (text (), 'Setting')], Dies führt zu zwei Webelementen. Daher ist es nicht einzigartig.
Hier ist also die endgültige Strategie:
>> Suchen Sie zunächst das nächstgelegene eindeutige Tag. In diesem Fall ist dies der Fall
XPATH: “//*[@id='rcTEST']
>> Zweitens suchen Sie das Webelement, das dem beabsichtigten Webelement am nächsten liegt, das in diesem Fall enthält (text (), 'TEST Interactive'). Jetzt befinden wir uns an der Stelle, an der sich die Schaltfläche 'Einstellung' befindet. Um jedoch darauf zu klicken, müssen Sie zunächst mithilfe von Doppelpunkten (siehe unten) zum Hauptfenster wechseln.
XPATH: “//*[@id='rcTEST']//*[contains(text(), 'TEST Interactive')]/..
>> Wie Sie sehen können, befinden wir uns in der Ebene, in der das zweite Webelement als Schaltfläche 'Einstellung' vorhanden ist. Es enthält zwei Schaltflächen und wir möchten zur zweiten Schaltfläche gehen, der Schaltfläche 'Einstellung'. Durch Hinzufügen von '/ button [2]' am Ende erhalten wir unseren einzigartigen XPATH für die 'Setting' -Taste, wie unten gezeigt.
Final XPATH:
“//*[@id='rcTEST']//*[contains(text(), 'TEST Interactive')]/../button[2]”
Hier ist eine andere Möglichkeit zum Generieren, wenn Sie glauben, dass der Webelementtyp von 'Schaltfläche' in etwas anderes geändert werden könnte.
“//*[@id='rcTEST']//*[contains(text(), 'TEST Interactive')]/..//*[contains(text(), 'Setting')]”
oder mit 'folgenden Geschwistern'
“//*[@id='rcTEST']//*[contains(text(), 'TEST Interactive')]/following-sibling::button”
# 2) Verwenden von Variablen und benutzerdefinierten Werten
Angenommen, es gibt eine Webanwendung mit FTP-Funktion ('File Transfer Protocol') zum Hochladen / Herunterladen von Dateien. Sie haben einen Testfall zum Herunterladen einer bestimmten Datei, indem Sie auf den Download-Link klicken.
Zunächst können wir den gesuchten Dateinamen als Variable definieren.
String expectedfileName = 'Test1';
Auswahl des Optionsfelds in Selen
Mit dem XPATH können wir nun den tatsächlichen Dateinamen finden.
“String actualFileName = WebDriverAccess.getDriver().findElement (By.xpath('//*'+fileName +'/tr/td[1]')).getAttribute('title');”
Im obigen XPath wird… ‘/ tr / td [1] .getAttribute (“ title ”)’ in die bestimmte Zeile und erste Spalte verschoben und erhält den Wert des title-Attributs. Wir können den tatsächlichen Dateinamen in einer anderen Variablen speichern.
Sobald wir sowohl den erwarteten als auch den tatsächlichen Dateinamen haben, können wir beide vergleichen und wenn beide übereinstimmen, können wir einfach auf den Download-Link klicken.
(if acutalFileName == expectedFileName) { WebDriverAccess.getDriver().findElement(By.xpath('//*'+fileName +'/tr/td[4]')).click(); }
Wir können auch eine Schleife durch jede Zeile erstellen und den Dateinamen so lange überprüfen, bis Sie ihn finden.
Loop(int count <30) { String actualFileName = WebDriverAccess. getDriver ().findElement (By. xpath ('//*'+acutalFileName +'/tr[' + count + ']/td[1]')).getAttribute('title'); (if acutalFileName == expectedFileName) { WebDriverAccess. getDriver ().findElement(By. xpath ('//*'+fileName +'/tr/td[4]')).click(); } Count++; }
Wir können eindeutige XPATH mithilfe von benutzerdefinierten Tags generieren und andere Bedingungen hinzufügen.
Zum Beispiel, Angenommen, unser beabsichtigtes Webelement befindet sich im Haupt-Tag, und es gibt mehrere Adress-Tags, aber Sie möchten nur ein bestimmtes finden. Alle Adress-Tags haben ein Klassenattribut, daher können wir damit beginnen.
// address[@class='ng-scope ng-isolate-scope']
Wir haben festgestellt, dass sich unser beabsichtigtes Webelement in einem Tag befindet, das einen Text namens 'Testen' enthält.
// address[@class='ng-scope ng-isolate-scope']//div[contains(.,'Testing')
Wir haben herausgefunden, dass als Ergebnis mehrere Webelemente gefunden wurden. Um es einzigartiger zu machen, können wir daher die anderen Bedingungen wie 'id' hinzufügen, die uns schließlich auf das gesuchte Webelement verweisen.
// address[@class='ng-scope ng-isolate-scope']//div[contains(.,Testing') and @id='msgTitle']
# 4) Verwenden von Attributen und Tabelle XPATH
Nehmen wir an, wir möchten ein Webelement eingeben, das in einer Tabelle und die Tabelle in einem Formularelement platziert ist.
Wir finden alle Formulare in DOM mit dem Namen 'myForm'.
“//*[@name='myForm']”
Suchen Sie nun in allen Formularen die Tabelle mit der ID 'tbl_testdm'.
'//*[@name='myForm']//table[@id='tbl_ testdm’]”
Gehen Sie innerhalb der Tabelle zu einer bestimmten Zeile und Spalte.
'//*[@name='myForm']//table[@id='tbl_ testdm’]/tbody/tr/td[6]/”
Wenn in der Zelle mehrere Eingaben vorhanden sind, suchen Sie eine Eingabe mit dem Wert 'Open RFS'. Dadurch erhalten Sie den endgültigen XPath des Felds.
//*[@name='myForm']//table[@id='tbl_ testdm’]/tbody/tr/td[6]/ input[@value='Open RFS']'
# 5) Verwenden von Attributen, Tabellen und Text
Angenommen, Ihr beabsichtigtes Webelement befindet sich in der Panel-Tabelle und enthält einen allgemeinen Text.
Beginnen Sie zunächst mit einem Panel mit einem eindeutigen Attribut, in diesem Fall 'TITEL'.
//*[@title=’Songs Lis Applet']
Navigieren Sie nun durch alle Tabellen-Tags.
//*[@title=’Songs Lis Applet']//table
In allen Tabellen finden Sie die Spalte mit dem Text 'Autor'.
Final XPath wäre wie folgt:
//*[@title=’Songs List Applet']//table//td[contains(text(),'Author')]
# 6) Generieren von XPATH mit verschachtelten Attributen
Der XPath des Zielwebelements kann auch mithilfe der verschachtelten Attribute generiert werden. Zum Beispiel, In diesem Fall wird im gesamten DOM nach einem bestimmten Attribut gesucht und anschließend nach einem anderen Attribut darin.
//*[@id='parameters']//*[@id='testUpdateTime']')
# 7) XPath-Generierung durch Kombinieren von Attributen, Divs und Schaltflächen
Zum Beispiel, Im folgenden XPath konnte ich das Zielwebelement mithilfe einer ID (relativer XPath), einiger Div-Tags und einer Schaltfläche finden.
“//*[@id='MODEL/PLAN']/div[1]/div[2]/div[1]/div[1]/widget/section/div[1]/div/div[1]/div/div/button[1]'
# 8) XPATH Generieren mit CONTAINS, REVERSE LOOKUP usw.
Einmal hatte ich ein Dropdown ohne direkte Identifizierung. Ich musste die Attribute CONTAINS, REVERSE, DIVs und verwenden, um den endgültigen XPATH zu erhalten, wie unten gezeigt.
//*[contains(text(),'Watch Dial)]/../div/select[@data-ng-model='context.questions [subqts.subHandleSubId]']'),
# 9) XPath-Generierung mit Relative, CONTAINS, REVERSE, FOLLOWING SIBLING usw.
Ich hatte eine Situation, in der die Anwendung ein Diagramm anzeigt und jeder Diagrammwert validiert werden musste. Leider hatte jeder Wert keine eindeutige Identifikation, daher habe ich den endgültigen XPATH wie unten gezeigt für einen Diagrammwert erstellt, der relative, enthaltende, umgekehrte, nachfolgende Geschwister- und div-Tags kombiniert.
//*[@id='RESEARCH/PLAN']//*[contains(@id, 'A4')]/../../following-sibling::div[1]/div[1]/span[1]/span[1]
# 10) XPath-Generierung unter Verwendung von Attributen, Enthält, Umkehren, Vorherigem Geschwister, Divs und Span
Einmal musste ich verschiedene Alarmdaten validieren und jeder Alarmwert wurde basierend auf einer bestimmten Berechnung oder einem bestimmten Zeitpunkt angezeigt. Um jeden Wert zu erfassen, musste ich mir das folgende XPATH einfallen lassen, das Attribute, enthält, umkehrt, Vorgängergeschwister, Divs und Span-Tags enthält.
//*[@id='ALARMDATA']//*[contains(@id, 'AFC2')]/../../preceding-sibling::div[1]/div[1]/span[1]/span[1]
# 11) Verwenden von Attributen, XML-Tags usw.
In den folgenden XPATH-, Attribut- und XML-Tags wird eine Sequenz verwendet, um die endgültige eindeutige Adresse eines Webelements zu ermitteln.
//*[@id='RESEARCH/REVIEW'] //widget/section/div[1]/div/div[2]/div[1]/div[3]/div[1]//span[@class='details']
# 12) XPath-Generierung, indem nicht auf die gesamte Seite geschaut wird, sondern stattdessen auf alle Links und Enthält
Der folgende XPath sucht nur nach Links auf einer ganzen Seite, die den Text als 'Parameter Data Manual Entry' enthalten.
wie man assert c ++ benutzt
//a[contains(.,'Parameter Data Manual Entry')]
# 13) Verwenden von Contains und Attributen
//*[contains(@style,'display: block; top:')]//input[@name='daterangepicker_end']
# 14) Verwenden von Attributen, Folgen von Geschwistern und Nachkommen
//*[@id='dropdown-filter-serviceTools']/following-sibling::ul/descendant::a[text()='Notepad']
# 15) Verwenden von Attributen, Folgen von Geschwistern, Nachkommen und Text
//*[@id='dropdown-filter-service tools'] /following-sibling::ul/descendant::a[text()='Trigger Dashboard']
# 16) Verwenden von Kopfzeile und Text
Wenn das Webelement eine Kopfzeile mit einem bestimmten Text ist, kann der XPath wie folgt aussehen:
//h3[text()='Internal Debrief']
# 17) Verwenden von Kopfzeilentext, Folgen von Geschwistern, Pfad usw.
//h3[contains(text(),'Helium Level')]/following-sibling::div/label/input
# 18) Verwenden von Attributen, Enthalten und Vorangehen von Geschwistern
Sobald ich eine Zeitspanne hatte, die kein eindeutiges Attribut hatte, hatte ich XPATH erstellt, indem ich Absolut, Enthält, vorhergehende Geschwister und einen anderen absoluten Pfad kombiniert hatte.
//div[div[p[contains(text(),'Status')]]]/preceding-sibling::div/div/span[3]/span
# 19) Suchen Sie nach einem Dropdown-Menü, indem Sie das ID-Attribut, einen bestimmten Text und die umgekehrte Suche verwenden
//*[@id='COUPLING']//*[contains(text(),'COUPLE Trend')]/../div/select
# 20) Kombinieren Sie das Attribut 'id' und suchen Sie nach einem Link mit einem bestimmten Text
//*[@id='ffaHeaderDropdown']//a[contains(text(),'Start Workflow')]
Fazit
Wenn es darum geht, einen Killer-XPATH zu schreiben, hängt es wirklich davon ab, wie gut Sie den Code verstehen und analysieren. Je besser Sie den Code verstehen, desto mehr Möglichkeiten gibt es, effektive XPATHs zu schreiben.
Der erste Schritt beim Schreiben von XPath besteht darin, das Ihrem Zielwebelement am nächsten liegende eindeutige Webelement zu finden und mit verschiedenen oben beschriebenen Techniken wie Attributen, DIVs, Folgen, Enthalten usw. immer näher zu kommen.
Am Ende würden wir dies noch einmal sagen, dass es Ihnen das Leben wirklich erleichtern wird, wenn Sie Ihr Entwicklungsteam auffordern, allen Webelementen, an denen Sie interessiert sind, eindeutige IDs hinzuzufügen.
Immer wenn ein Sprintzyklus beginnt oder an neuen Anforderungen gearbeitet wird und das Team mit neuen Modellen geteilt wird, gehe ich immer alle Verspottungen durch und denke über mögliche Automatisierungstestfälle nach. Erstellen Sie eine Liste aller potenziellen Webelemente, die verwendet werden in Automatisierungstests und bereite meine eigenen IDs vor.
Sobald eine Liste aller Webelemente mit meinen vorgeschlagenen IDs fertig ist, würde ich sie dem Entwickler vorab zur Verwendung im Entwicklungscode freigeben. Auf diese Weise würde ich immer eindeutige IDs erhalten, indem ich meinen XPATH-Schreibkampf einfach mache.
Unten finden Sie eine kombinierte Liste verschiedener Möglichkeiten, XPATHs zu schreiben:
- '// * [@ id = 'rcTEST'] // * [enthält (text (), 'TEST Interactive')] /../ button [2]'
- '// * [@ id = 'rcTEST'] // * [enthält (text (), 'TEST Interactive')] /..//* [enthält (text (), 'Setting')]'
- '// * [@ id = 'rcTEST'] // * [enthält (text (), 'TEST Interactive')] / follow-sibling :: button'
- 'String actualFileName = WebDriverAccess.getDriver (). FindElement (By.xpath (' // * '+ Dateiname +' / tr / td [1] '). GetAttribute (' title ');'
- WebDriverAccess.getDriver (). FindElement (By.xpath ('// *' + Dateiname + '/ tr / td [4]'). Click ();
- '// Adresse [@ class = 'ng-scope ng-isolate-scope'] // div [enthält (., Testing ') und @ id =' msgTitle ']'
- '// * [@ name =’ myForm ’] // table [@ id =’ tbl_ testdm ’] / tbody / tr / td [6] /
- Eingabe [@ value = ’RFS öffnen’] ”
- '// * [@ title =' Songs List Applet '] // table // td [enthält (text (),' Author ')]'
- '// * [@ id =’ parameters ’] // * [@ id =’ testUpdateTime ’]') '
- “// * [@ id = 'MODELL / PLAN'] / div [1] / div [2] / div [1] / div [1] / widget / section / div [1] / div / div [1] / div / div / button [1] ”
- '// * [enthält (text (),’ Watch Dial)] /../ div / select [@ data-ng-model = ’context.questions [subqts.subHandleSubId]’] '),'
- “// * [@ id = 'RESEARCH / PLAN'] // * [enthält (@id, 'A4')] /../../ folgendes Geschwister :: div [1] / div [1] / span [1] / span [1] ”
- “// * [@ id = 'ALARMDATA'] // * [enthält (@id, 'AFC2')] /../../ Vorgeschwister :: div [1] / div [1] / span [ 1] / span [1] ”
- “// * [@ id = 'RESEARCH / REVIEW'] // Widget / Abschnitt / Div [1] / Div / Div [2] / Div [1] / Div [3] / Div [1] // Span [ @ class = 'details'] ”
- '//A[contains(.,’Parameter Data Manual Entry’)] '
- '// * [enthält (@ style,’ display: block; top: ’)] // input [@ name =’ daterangepicker_end ’]'
- '// * [@ id =' Dropdown-Filter-ServiceTools '] / folgendes Geschwister :: ul / Nachkomme :: a [text () =' Editor ']'
- '// * [@ id =' Dropdown-Filter-ServiceTools '] / folgendes Geschwister :: ul / Nachkomme :: a [text () =' Trigger Dashboard ']'
- '// h3 [text () =' Interne Nachbesprechung ']'
- '// h3 [enthält (text (), 'Helium Level')] / folgendes Geschwister :: div / label / input'
- '// div [div [p [enthält (text (),’ Status ’)]]] / Vorgeschwister :: div / div / span [3] / span'
- '// * [@ id =’ COUPLING ’] // * [enthält (text (),’ COUPLE Trend ’)] /../ div / select'
- '// * [@ id =’ ffaHeaderDropdown ’] // a [enthält (text (),’ Workflow starten ’)]'
Ich hoffe, dieser informative Artikel hätte Ihr Wissen über das Schreiben von XPaths bereichert.
Autor Bio: Dieser Artikel wurde von Adnan Arif verfasst, einem IT-Experten mit vielfältigen Erfahrungen und Fähigkeiten in seiner über 9-jährigen Karriere.
Literatur-Empfehlungen
- Ausführliche Eclipse-Tutorials für Anfänger
- Python DateTime Tutorial mit Beispielen
- Unix Cat-Befehlssyntax, Optionen mit Beispielen
- Unix-Sortierbefehl mit Syntax, Optionen und Beispielen
- Unix Shell Scripting Tutorial mit Beispielen
- Selenium Find Element By Text Tutorial mit Beispielen
- Python-Hauptfunktions-Tutorial mit praktischen Beispielen
- Xpath Extractor Post-Prozessor in JMeter