ultimate xpath writing cheat sheet tutorial with syntax
Top 20 manieren om ultieme XPATH te schrijven voor ELK type webelement (XPATH zal nooit ongeldig zijn):
Een webtoepassing bestaat uit verschillende soorten webelementen, zoals een webelement waarop een knop kan klikken, een webelement om tekst in te voeren, dropdown-menu's, keuzerondjes, enz.
Deze webelementen worden ook wel tags of knooppunten genoemd.
Als het gaat om het automatiseren van webapplicaties, begint het met het schrijven van een automatiseringsscript dat het webelement vindt, er een actie op uitvoert, zoals klikken op een knop, tekst invoeren in het invoervak, een selectievakje selecteren, een keuzerondje selecteren, scrol omhoog of omlaag en verifieer ten slotte het verwachte gedrag in de beurt van de actie.
Wat je leert:
- Wat is XPath en hoe ziet het eruit?
- Top 20 manieren om XPath te schrijven voor elk webelement
- # 1) Omgekeerd opzoeken
- # 2) Variabelen en aangepaste waarden gebruiken
- # 3) Met behulp van 'XML' -tags, 'AND' enz
- # 4) Attributen en tabel XPATH gebruiken
- # 5) Attributen, tabellen en tekst gebruiken
- # 6) XPATH genereren met geneste attributen
- # 7) XPath-generatie door attributen, div's en knoppen te combineren
- # 8) XPATH genereren met CONTAINS, REVERSE LOOKUP, etc.
- # 9) XPath-generatie met behulp van Relative, CONTAINS, REVERSE, FOLLOWING SIBLING, etc.
- # 10) XPath-generatie met behulp van attributen, bevat, omgekeerde, voorafgaande broer / zus, divs en span
- # 11) Attributen, XML-tags etc. gebruiken
- # 12) XPath-generatie door niet in de hele pagina te kijken, maar in plaats daarvan naar alle links en bevat
- # 13) Bevat en attributen gebruiken
- # 14) Attributen gebruiken, broers en zussen volgen en nakomelingen volgen
- # 15) Attributen gebruiken, broers en zussen volgen, afstammeling en tekst
- # 16) Koptekst en tekst gebruiken
- # 17) Koptekst gebruiken, broers en zussen volgen, pad, etc.
- # 18) Attributen, bevat en voorgaande broers en zussen gebruiken
- # 19) Zoeken naar vervolgkeuzelijst met behulp van Id-attribuut, een aantal specifieke tekst en reverse lookup
- # 20) Combineren van “id” -attribuut en zoeken naar een link met specifieke tekst
- Gevolgtrekking
- Aanbevolen literatuur
Wat is XPath en hoe ziet het eruit?
Het vinden van een element is als het vinden van iemands huis op de kaart. De enige manier waarop we het huis van een vriend kunnen vinden zonder externe hulp, is dat we een kaart hebben en weten wat we kunnen vinden (huis).
Om deze analogie in ons geval te plaatsen, wordt de kaart gebruikt als DOM (HTML-tags, JavaScript, etc.) waar alle webelementen bestaan, samen met het specifieke webelement dat we willen vinden.
Zodra het unieke adres of pad van een element is gevonden, voert het automatiseringsscript enkele acties uit op basis van het testscenario. Bijvoorbeeld, u wilt de URL verifiëren van de pagina die wordt geopend na het klikken op een knop.
Het is echter niet eenvoudig om een uniek adres / pad van een webelement te vinden, aangezien er vergelijkbare tags, dezelfde attributenwaarden, identieke paden kunnen zijn, waardoor het moeilijk wordt om een exact uniek adres te creëren voor een webelement genaamd 'XPATH'.
Hier gaan we dieper in op enkele geweldige en effectieve technieken om geldige en unieke XPATH te genereren voor elk type webelement.
Aanbevolen lezen => Identificeer webelementen met XPath in Selenium
Soms kun je eenvoudig XPaths maken met browserextensies, maar in mijn automatisering testen carrière heb ik talloze situaties meegemaakt waarin traditionele browserextensies niet werken en je met je eigen creativiteit je eigen aangepaste XPaths moet bedenken. Ik ben er zeker van dat u soortgelijke situaties heeft of zult krijgen.
In deze zelfstudie bekijken we de 20 beste manieren om het ultieme XPath voor een webelement te maken, zodat zelfs wanneer uw code wordt gewijzigd, uw XPath de hele tijd geldig blijft (tenzij de ontwikkelaar het volledige functie / module).
Door al deze technieken te kennen, wordt u een meester in het schrijven van uw eigen XPath en kunt u geweldige XPaths schrijven met zeer weinig kans om ongeldig te worden.
Laten we eerst beginnen met het begrijpen van de XPath-syntaxis en elk onderdeel ervan definiëren.
De onderstaande afbeelding laat zien hoe XPath eruit zal zien, samen met een beschrijving van elk onderdeel:
- Selecteer het huidige knooppunt zoals input, div etc.
- Tagname: Tagname van het webelement / knooppunt
- Selecteer kenmerk
- Attribuut: Kenmerknaam van het knooppunt / bepaald webelement
- Waarde: Waarde van het kenmerk
Ik wil hier een paar tips delen dat 80% van de tijd mijn automatiseringstestscript mislukte vanwege XPath. Dit wordt veroorzaakt doordat er meerdere webelementen zijn voor het geleverde XPath of XPath is niet geldig of de pagina is nog niet geladen.
Dus als uw testcase faalt:
- Kopieer uw XPath.
- Zoek het in de browser (F12 of venster van de ontwikkelaarstool) in de DOM om te controleren of het geldig is of niet (zie onderstaande afbeelding).
Pro Type 1: Zorg ervoor dat het uniek is en dat er geen ander webelement verschijnt wanneer u tweemaal zoekt in de DOM.
Pro Type 2: Soms is er een timingprobleem, wat betekent dat uw webelement / pagina nog niet is geladen terwijl het script ernaar aan het zoeken was, voeg daarom wat wachttijd toe en test opnieuw.
Pro Type 3: Probeer de volledige DOM af te drukken voordat u naar het webelement zoekt. Op deze manier kunt u door in Console te kijken of uw webelement in de DOM bestaat of niet.
Voordat we diep in XPath kijken, is een belangrijk ding dat ik wil delen: als je directe toegang hebt tot het ontwikkelingsteam of als je team zich bevindt waar je bent, vraag dan je ontwikkelingsteam om je unieke ID's te geven in elk webelement of in ieder geval degene die u voor automatisering wilt gebruiken en dit bespaart u veel tijd.
Als dit niet de mogelijkheid is, moet u misschien uw creativiteit gebruiken en uw eigen aangepaste XPaths bedenken en dat is wat we nu gaan leren.
world of warcraft beste privéserver
Top 20 manieren om XPath te schrijven voor elk webelement
Laten we eens diep ingaan op het maken van de 20 beste manieren om een geweldige XPath te bereiken.
# 1) Omgekeerd opzoeken
Stel dat u op een knop wilt klikken en er is een vergelijkbare knop. Beide knoppen hebben id-attributen, maar ze zijn dynamisch en geen van de attributen is uniek in beide knopelementen.
In het onderstaande scenario willen we klikken op de knop 'Instelling' van de 'Test Interactive'.
Code
Als je naar de “Instellingen” -knoppen kijkt, zijn beide codes vergelijkbaar. Door traditionele manieren te gebruiken zoals id, naam, waarde, bevat, enz., Zal geen van hen bijvoorbeeld werken.
// * [bevat (text (), ‘Setting’)], Dit resulteert in twee webelementen. Daarom is het niet uniek.
Dus hier is de laatste strategie,
Zoek eerst de dichtstbijzijnde tag die uniek is en in dit geval ook
Ten tweede: Zoek het webelement dat het dichtst bij het beoogde webelement ligt, dat in dit geval (text (), ‘TEST Interactive’) bevat. Nu zijn we op dezelfde plaats waar de ‘Setting’ -knop bestaat, maar om erop te klikken, moeten we eerst naar de hoofdpagina gaan door dubbele stippen te gebruiken, zoals hieronder wordt weergegeven.
Zoals u kunt zien, bevinden we ons op het niveau met het tweede webelement als de ‘Instelling’ knop. Dit heeft twee knoppen en we willen naar de tweede knop, de ‘Instellingen’ knop. Door ‘/ button [2]’ aan het einde toe te voegen, kunnen we onze unieke XPATH voor de ‘Setting’ -knop krijgen, zoals hieronder weergegeven.
Laatste XPATH:
Hier is een andere manier om te genereren als u denkt dat ze het webelementtype van 'knop' in iets anders kunnen veranderen.
of 'volgende broer of zus' gebruiken
# 2) Variabelen en aangepaste waarden gebruiken
Laten we zeggen dat er een webtoepassing is met een FTP-functie ('File Transfer Protocol') om bestanden te uploaden / downloaden en dat u een testcase heeft om een specifiek bestand te downloaden door op de downloadlink te klikken.
Ten eerste kunnen we de bestandsnaam die we zoeken definiëren als een variabele.
String verwachtefileName = 'Test1';
Nu we de XPATH gebruiken, kunnen we de daadwerkelijke bestandsnaam vinden.
In het bovenstaande XPath,… ‘/ tr / td [1] .getAttribute (' title ')’ gaat naar de specifieke rij en eerste kolom en krijgt de waarde van het titelattribuut. We kunnen de daadwerkelijke bestandsnaam opslaan in een andere variabele.
Zodra we zowel de verwachte als de werkelijke bestandsnaam hebben, kunnen we beide vergelijken en als beide overeenkomen, kunnen we eenvoudig op de downloadlink klikken.
We kunnen ook een lus door elke rij maken en de bestandsnaam blijven verifiëren totdat u deze vindt.
We kunnen unieke XPATH genereren met behulp van aangepaste tags en andere voorwaarden toevoegen.
Bijvoorbeeld, Laten we zeggen dat ons beoogde webelement in de hoofdtag bestaat en dat er meerdere adrestags zijn, maar u wilt er slechts een specifiek vinden. Alle adrestags hebben een class-attribuut, dus we kunnen beginnen met.
We hebben gemerkt dat ons beoogde webelement zich in een tag bevindt met de tekst ‘Testen’.
We kwamen erachter dat er daardoor meerdere webelementen zijn gevonden. Om het nog unieker te maken, kunnen we de andere voorwaarden toevoegen, zoals 'id', die ons uiteindelijk naar het webelement zullen verwijzen waarnaar we op zoek zijn.
# 4) Attributen en tabel XPATH gebruiken
Laten we aannemen dat we willen typen in een webelement dat in een tabel wordt geplaatst en dat de tabel in een formulierelement wordt geplaatst.
We kunnen alle formulieren binnen DOM vinden met de naam ‘myForm’.
Zoek nu in alle formulieren de tabel met id ‘tbl_testdm’.
Ga binnen de tabel naar een specifieke rij en kolom.
Als er in de cel meerdere ingangen zijn, zoek dan een ingang waarbij waarde = ‘Open RFS’, en dit geeft ons het laatste XPath van het veld.
# 5) Attributen, tabellen en tekst gebruiken
Stel dat uw beoogde webelement in de paneeltabel ligt en een aantal algemene tekst heeft.
j2ee interviewvragen en antwoorden pdf
Begin eerst met een panel met een uniek attribuut, in dit geval ‘TITLE’.
Navigeer nu door alle tabellabels.
Zoek in alle tabellen de kolom met de tekst ‘Auteur’.
Final XPath zou zijn als:
# 6) XPATH genereren met geneste attributen
Het XPath van het doelwebelement kan ook worden gegenereerd met behulp van de geneste attributen. Bijvoorbeeld, in dit geval zoekt het naar een specifiek kenmerk in DOM en zoekt het vervolgens naar een ander kenmerk erin.
# 7) XPath-generatie door attributen, div's en knoppen te combineren
Bijvoorbeeld, in de onderstaande XPath kon ik het doelwebelement vinden door een id (relatieve XPath), enkele div-tags en een knop te gebruiken.
# 8) XPATH genereren met CONTAINS, REVERSE LOOKUP, etc.
Ooit had ik een drop-down zonder directe identificatie. Ik moest CONTAINS, REVERSE, DIV's, attributen gebruiken om de uiteindelijke XPATH te bedenken, zoals hieronder wordt weergegeven.
# 9) XPath-generatie met behulp van Relative, CONTAINS, REVERSE, FOLLOWING SIBLING, etc.
Ik had een situatie waarin de applicatie een grafiek weergeeft en elke grafiekwaarde moest worden gevalideerd. Maar helaas had elke waarde geen unieke identificatie, dus ik heb de uiteindelijke XPATH bedacht zoals hieronder weergegeven voor één grafiekwaarde die relatieve, bevat, omgekeerde, volgende-broer / zus en div-tags combineert.
# 10) XPath-generatie met behulp van attributen, bevat, omgekeerde, voorafgaande broer / zus, divs en span
Ooit moest ik verschillende alarmgegevens valideren en werd elke alarmwaarde weergegeven op basis van een specifieke berekening of timing. Om elke waarde vast te leggen, moest ik de onderstaande XPATH bedenken die attributen gebruikt, bevat, reverse, voorgaande-sibling, divs en span-tags.
# 11) Attributen, XML-tags etc. gebruiken
In de onderstaande XPATH, attributen en XML-tags wordt een reeks gebruikt om het uiteindelijke unieke adres van een webelement te bedenken.
# 12) XPath-generatie door niet in de hele pagina te kijken, maar in plaats daarvan naar alle links en bevat
De onderstaande XPath zoekt alleen naar links op een hele pagina die de tekst bevatten als 'Parametergegevens handmatige invoer'.
# 13) Bevat en attributen gebruiken
# 14) Attributen gebruiken, broers en zussen volgen en nakomelingen volgen
# 15) Attributen gebruiken, broers en zussen volgen, afstammeling en tekst
# 16) Koptekst en tekst gebruiken
Als het webelement een koptekst is met een bepaalde tekst, dan kan de XPath er als volgt uitzien:
# 17) Koptekst gebruiken, broers en zussen volgen, pad, etc.
# 18) Attributen, bevat en voorgaande broers en zussen gebruiken
Toen ik eenmaal een bereik had dat geen uniek kenmerk had, had ik XPATH gemaakt door absoluut, bevat, voorgaande broers en zussen en een ander absoluut pad te combineren.
# 19) Zoeken naar vervolgkeuzelijst met behulp van Id-attribuut, een aantal specifieke tekst en reverse lookup
# 20) Combineren van “id” -attribuut en zoeken naar een link met specifieke tekst
Gevolgtrekking
Als het gaat om het schrijven van een geweldige XPATH, hangt het er echt van af hoe goed je de code begrijpt en analyseert. Hoe beter u de code begrijpt, hoe meer manieren u zult vinden bij het schrijven van effectieve XPATH's.
De eerste stap bij het schrijven van XPath is het vinden van het unieke webelement dat het dichtst bij uw doelwebelement ligt en steeds dichterbij komt met behulp van verschillende hierboven besproken technieken, zoals attributen, DIV's, volgen, bevat, enz.
Uiteindelijk zouden we dit nogmaals zeggen dat het uw leven echt gemakkelijker zal maken als u uw ontwikkelingsteam vraagt om unieke ID's toe te voegen aan alle webelementen waarin u geïnteresseerd bent.
Telkens wanneer een sprintcyclus begint of aan een nieuwe vereiste werkt en het team wordt gedeeld met nieuwe mockups, doorloop ik altijd alle mockups en denk in gedachten na over mogelijke automatiseringstestgevallen, maak een lijst van alle potentiële webelementen die zullen worden gebruikt in automatiseringstests en bereid mijn eigen id's voor.
Zodra een lijst van alle webelementen samen met mijn voorgestelde id's is voltooid, zou ik deze van tevoren met de ontwikkelaar delen om in de ontwikkelcode te gebruiken. Op deze manier zou ik altijd unieke ID's krijgen door mijn XPATH-schrijfstrijd gemakkelijk te maken.
Hieronder vindt u een gecombineerde lijst met verschillende manieren om XPATH's te schrijven:
- '// * [@ id =’ rcTEST ’] // * [bevat (text (),‘ TEST Interactive ’)] /../ button [2]”
- '// * [@ id =’ rcTEST ’] // * [bevat (text (),‘ TEST Interactive ’)] /..//* [bevat (text (),‘ Setting ’)] '
- '// * [@ id =’ rcTEST ’] // * [bevat (text (),‘ TEST Interactive ’)] / volgende-broer of zus :: knop”
- 'String actualFileName = WebDriverAccess.getDriver (). FindElement (By.xpath (' // * '+ bestandsnaam +' / tr / td [1] ')). GetAttribute (' title ');'
- WebDriverAccess.getDriver (). FindElement (By.xpath ('// *' + bestandsnaam + '/ tr / td [4]')). Click ();
- '// adres [@ class = 'ng-scope ng-isolate-scope'] // div [bevat (., Testing ') en @ id =' msgTitle ']'
- '// * [@ name =’ myForm ’] // table [@ id =’ tbl_ testdm ’] / tbody / tr / td [6] /
- input [@ value = ’Open RFS’] '
- '// * [@ title =’ Nummerslijst-applet ’] // tabel // td [bevat (text (),’ Auteur ’)]'
- '// * [@ id =’ parameters ’] // * [@ id =’ testUpdateTime ’]') '
- '// * [@ id = 'MODEL / PLAN'] / div [1] / div [2] / div [1] / div [1] / widget / sectie / div [1] / div / div [1] / div / div / button [1] '
- '// * [bevat (text (),’ Watch Dial)] /../ div / select [@ data-ng-model = ’context.questions [subqts.subHandleSubId]’] '),'
- '// * [@ id = 'ONDERZOEK / PLAN'] // * [bevat (@id, 'A4')] /../../ broer of zus: div [1] / div [1] / span [1] / span [1] '
- '// * [@ id = 'ALARMDATA'] // * [bevat (@id, 'AFC2')] /../../ voorgaande broer / zus :: div [1] / div [1] / span [ 1] / span [1] '
- '// * [@ id = 'ONDERZOEK / REVIEW'] // widget / sectie / div [1] / div / div [2] / div [1] / div [3] / div [1] // span [ @ class = 'details'] ”
- '//A[bevat(.,’Parametergegevens handmatige invoer’)] '
- '// * [bevat (@ style,’ display: block; top: ’)] // input [@ name =’ daterangepicker_end ’]'
- '// * [@ id =’ dropdown-filter-serviceTools ’] / volgende broer of zus :: ul / afstammeling :: a [text () =’ Kladblok ’]”
- '// * [@ id =’ dropdown-filter-serviceTools ’] / volgende broer of zus :: ul / afstammeling :: a [text () =’ Trigger Dashboard ’]”
- '// h3 [text () =’ Interne nabespreking ’]'
- '// h3 [bevat (text (),’ Helium Level ’)] / volgende broer / zus :: div / label / input'
- '// div [div [p [bevat (text (),’ Status ’)]]] / voorgaande broer / zus :: div / div / span [3] / span'
- '// * [@ id =’ COUPLING ’] // * [bevat (text (),’ COUPLE Trend ’)] /../ div / select”
- '// * [@ id =’ ffaHeaderDropdown ’] // a [bevat (text (),’ Start Workflow ’)]'
Ik hoop dat dit informatieve artikel je kennis over het schrijven van XPaths zou hebben verrijkt.
Auteur Bio: Dit artikel is geschreven door Adnan Arif, een IT-professional met diverse ervaring en vaardigheden in zijn carrière van meer dan 9 jaar.
Aanbevolen literatuur
- Diepgaande Eclipse-zelfstudies voor beginners
- Python DateTime-zelfstudie met voorbeelden
- Unix Cat Command Syntax, opties met voorbeelden
- Unix-sorteeropdracht met syntaxis, opties en voorbeelden
- Unix Shell Scripting Tutorial met voorbeelden
- Selenium Find Element By Text Tutorial met voorbeelden
- Python Main Function-zelfstudie met praktische voorbeelden
- Xpath Extractor Post-Processor in JMeter