XPath ind Selenium: Tutorial

Hvad er XPath i Selenium?
XPath ind Selenium er en XML-sti, der bruges til at navigere gennem sidens HTML-struktur. Det er en syntaks eller et sprog til at finde ethvert element pรฅ en webside ved hjรฆlp af XML-stiudtryk. XPath kan bruges til bรฅde HTML- og XML-dokumenter til at finde placeringen af โโethvert element pรฅ en webside ved hjรฆlp af HTML DOM-struktur.
In Selenium automatisering, hvis elementerne ikke findes af de generelle lokatorer som id, klasse, navn osv., bruges XPath til at finde et element pรฅ websiden.
I denne รธvelse lรฆrer vi om Xpath og forskellige XPath-udtryk for at finde de komplekse eller dynamiske elementer, hvis attributter รฆndres dynamisk ved opdatering eller andre operationer.
XPath-syntaks
XPath indeholder stien til elementet placeret pรฅ websiden. Standard XPath-syntaks til oprettelse af XPath er.
Xpath=//tagname[@attribute='value']
Det grundlรฆggende format for XPath i selen er forklaret nedenfor med skรฆrmbillede.

- // : Vรฆlg den aktuelle node.
- Tagnavn: Tagnavn pรฅ den bestemte node.
- @: Vรฆlg attribut.
- Egenskab: Attributnavn pรฅ noden.
- Vรฆrdi: Vรฆrdien af โโattributten.
For at finde elementet pรฅ websider nรธjagtigt er der forskellige typer lokalisatorer:
| XPath-lokalisatorer | Find forskellige elementer pรฅ websiden |
|---|---|
| ID | For at finde elementet efter elementets ID |
| Klassenavn | For at finde elementet efter klassenavn pรฅ elementet |
| Navn | For at finde elementet efter elementets navn |
| Linktekst | For at finde elementet efter teksten i linket |
| XPath | XPath pรฅkrรฆvet for at finde det dynamiske element og krydse mellem forskellige elementer pรฅ websiden |
| CSS-sti | CSS-stien lokaliserer ogsรฅ elementer uden navn, klasse eller ID. |
Typer af X-sti
Der er to typer XPath:
1) Absolut XPath
2) Relativ XPath
Absolut XPath
Det er den direkte mรฅde at finde elementet pรฅ, men ulempen ved den absolutte XPath er, at hvis der er foretaget รฆndringer i elementets sti, sรฅ bliver XPath mislykket.
Nรธglekarakteristikken ved XPath er, at den begynder med den enkelte fremadgรฅende skrรฅstreg(/), hvilket betyder, at du kan vรฆlge elementet fra rodnoden.
Nedenfor er eksemplet pรฅ et absolut Xpath-udtryk af elementet vist pรฅ nedenstรฅende skรฆrm.
BEMรRK: Du kan รธve fรธlgende XPath-รธvelse pรฅ dette https://demo.guru99.com/test/selenium-xpath.html
Klik link. hvis videoen ikke er tilgรฆngelig
Absolut 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]
Relativ Xpath
Relativ Xpath starter fra midten af โโHTML DOM-strukturen. Det starter med dobbelt skrรฅstreg (//). Det kan sรธge i elementer hvor som helst pรฅ websiden, betyder, at du ikke behรธver at skrive en lang xpath, og du kan starte fra midten af โโHTML DOM-strukturen. Relativ Xpath foretrรฆkkes altid, da det ikke er en komplet sti fra rodelementet.
Nedenfor er eksemplet pรฅ et relativt XPath-udtryk af det samme element vist pรฅ nedenstรฅende skรฆrm. Dette er det almindelige format, der bruges til at finde element af XPath.
Klik link. hvis videoen ikke er tilgรฆngelig
Relative XPath: //div[@class='featured-box cloumnsize1']//h4[1]//b[1]
Hvad er XPath-akser?
XPath-akser sรธger i forskellige noder i XML-dokument fra den aktuelle kontekstknude. XPath-akser er de metoder, der bruges til at finde dynamiske elementer, som ellers ikke er mulige ved normal XPath-metode uden ID, Klassenavn, Navn osv. XPath i Selenium omfatter flere metoder sรฅsom Indeholder, OG, Absolut XPath og Relativ XPath til at identificere og lokalisere dynamiske elementer baseret pรฅ forskellige attributter og betingelser.
Axe-metoder bruges til at finde de elementer, som รฆndres dynamisk ved opdatering eller andre operationer. Der er fรฅ aksemetoder, der almindeligvis anvendes i Selenium Webdriver som barn, forรฆlder, forfader, sรธskende, forudgรฅende, selv osv.
Sรฅdan skriver du dynamisk XPath i Selenium webdriver
1) Grundlรฆggende XPath
XPath udtryk vรฆlg noder eller liste over noder pรฅ basis af attributter som ID, navn, klassenavnosv. fra XML-dokumentet som illustreret nedenfor.
Xpath=//input[@name='uid']
Her er et link for at fรฅ adgang til siden https://demo.guru99.com/test/selenium-xpath.html
Nogle mere grundlรฆggende xpath-udtryk:
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) Indeholder()
Contains() er en metode, der bruges i XPath-udtryk. Det bruges, nรฅr vรฆrdien af โโen attribut รฆndres dynamisk, for eksempel login-oplysninger.
Indeholder-funktionen har en evne til at finde elementet med delvis tekst som vist i XPath-eksemplet nedenfor.
I dette eksempel forsรธgte vi at identificere elementet ved blot at bruge en delvis tekstvรฆrdi af attributten. I det nedenstรฅende XPath-udtryk bruges delvis vรฆrdi 'sub' i stedet for indsend-knappen. Det kan observeres, at elementet er fundet med succes.
Den fulde vรฆrdi af 'Type' er 'submit', men bruger kun en delvis vรฆrdi 'sub'.
Xpath=//*[contains(@type,'sub')]
Den fulde vรฆrdi af 'navn' er 'btnLogin', men bruger kun en delvis vรฆrdi 'btn'.
Xpath=//*[contains(@name,'btn')]
I ovenstรฅende udtryk har vi taget 'navnet' som en attribut og 'btn' som en delvรฆrdi som vist pรฅ nedenstรฅende skรฆrmbillede. Dette vil finde 2 elementer (LOGIN & NULSTIL), da deres 'navn'-attribut begynder med 'btn'.
Tilsvarende har vi i nedenstรฅende udtryk taget 'id' som en attribut og 'besked' som en delvรฆrdi. Dette vil finde 2 elementer ('Bruger-ID mรฅ ikke vรฆre tomt' & 'Adgangskode mรฅ ikke vรฆre tomt'), da dens 'id'-attribut begynder med 'besked'.
Xpath=//*[contains(@id,'message')]
I nedenstรฅende udtryk har vi taget "teksten" af linket som en attribut og 'her' som en delvรฆrdi som vist pรฅ nedenstรฅende skรฆrmbillede. Dette vil finde linket ('her'), da det viser teksten 'her'.
Xpath=//*[contains(text(),'here')]
Xpath=//*[contains(@href,'guru99.com')]
3) Brug ELLER & OG
I OR-udtryk bruges to betingelser, uanset om 1. betingelse ELLER 2. betingelse skal vรฆre sand. Det gรฆlder ogsรฅ, hvis en betingelse er sand eller mรฅske begge dele. Betyder, at enhver betingelse skal vรฆre sand for at finde elementet.
I XPath-udtrykket nedenfor identificerer det de elementer, hvis enkelte eller begge betingelser er sande.
Xpath=//*[@type='submit' or @name='btnReset']
Fremhรฆver begge elementer som et "LOGIN"-element med attributten 'type' og et "RESET"-element med attributten 'name'.
I AND-udtryk bruges to betingelser, begge betingelser skal vรฆre sande for at finde elementet. Det lykkes ikke at finde element, hvis en betingelse er falsk.
Xpath=//input[@type='submit' and @name='btnLogin']
I udtrykket nedenfor fremhรฆves 'LOGIN'-elementet, da det har bรฅde attributten 'type' og 'navn'.
4) Xpath starter-med
XPath starter-med() er en funktion, der bruges til at finde det webelement, hvis attributvรฆrdi bliver รฆndret ved opdatering eller ved andre dynamiske operationer pรฅ websiden. I denne metode matches startteksten for attributten for at finde det element, hvis attributvรฆrdi รฆndres dynamisk. Du kan ogsรฅ finde elementer, hvis attributvรฆrdi er statisk (ikke รฆndringer).
For eksempel -: Antag, at id'et for et bestemt element รฆndres dynamisk som:
Id=" message12"
Id=" message345"
Id=" message8769"
og sรฅ videre.. men den indledende tekst er den samme. I dette tilfรฆlde bruger vi Start-med udtryk.
I udtrykket nedenfor er der to elementer med et id, der starter "besked" (dvs. 'Bruger-ID mรฅ ikke vรฆre tomt' & 'Adgangskode mรฅ ikke vรฆre tomt'). I eksemplet nedenfor finder XPath det element, hvis 'ID' starter med 'besked'.
Xpath=//label[starts-with(@id,'message')]
5) XPath Text() Funktion
XPath text() funktion er en indbygget funktion af selen webdriver, som bruges til at lokalisere elementer baseret pรฅ tekst i et webelement. Det hjรฆlper med at finde de nรธjagtige tekstelementer, og det lokaliserer elementerne i sรฆttet af tekstnoder. De elementer, der skal lokaliseres, skal vรฆre i strengform.
I dette udtryk, med tekstfunktion, finder vi elementet med nรธjagtig tekstmatch som vist nedenfor. I vores tilfรฆlde finder vi elementet med teksten "UserID".
Xpath=//td[text()='UserID']
XPath-akser metoder
Disse XPath-aksemetoder bruges til at finde de komplekse eller dynamiske elementer. Nedenfor vil vi se nogle af disse metoder.
For at illustrere disse XPath-akser, vil vi bruge Guru99 bank demoside.
1) Fรธlger
Vรฆlger alle elementer i dokumentet for den aktuelle node( ) [ UserID input box is the current node] som vist pรฅ nedenstรฅende skรฆrm.
Xpath=//*[@type='text']//following::input
Der er 3 "input" noder, der matcher ved at bruge "fรธlgende" akse-adgangskode, login og nulstillingsknap. Hvis du vil fokusere pรฅ et bestemt element, kan du bruge nedenstรฅende XPath-metode:
Xpath=//*[@type='text']//following::input[1]
Du kan รฆndre XPath i henhold til kravet ved at sรฆtte [1],[2]โฆโฆโฆโฆog sรฅ videre.
Med input som '1', finder nedenstรฅende skรฆrmbillede den sรฆrlige node, der er 'Password' input box element.
2) Stamfader
Forfaderaksen vรฆlger alle forfรฆdreelementer (bedsteforรฆlder, forรฆlder osv.) for den aktuelle node som vist pรฅ nedenstรฅende skรฆrmbillede.
I nedenstรฅende udtryk finder vi forfรฆdres element i den nuvรฆrende node ("ENTERPRISE TESTING" node).
Xpath=//*[text()='Enterprise Testing']//ancestor::div
Der er 13 "div"-knuder, der matcher ved at bruge "forfader"-aksen. Hvis du vil fokusere pรฅ et bestemt element, kan du bruge nedenstรฅende XPath, hvor du รฆndrer tallet 1, 2 efter dit krav:
Xpath=//*[text()='Enterprise Testing']//ancestor::div[1]
Du kan รฆndre XPath i henhold til kravet ved at sรฆtte [1], [2]โฆโฆโฆโฆog sรฅ videre.
3) Barn
Vรฆlger alle underordnede elementer af den aktuelle node (Java) som vist pรฅ nedenstรฅende skรฆrm.
Xpath=//*[@id='java_technologies']//child::li
Der er 71 "li"-knuder, der matcher ved at bruge "barn"-aksen. Hvis du vil fokusere pรฅ et bestemt element, kan du bruge nedenstรฅende xpath:
Xpath=//*[@id='java_technologies']//child::li[1]
Du kan รฆndre xpath i henhold til kravet ved at sรฆtte [1],[2]โฆโฆโฆโฆog sรฅ videre.
4) Foregรฅende
Vรฆlg alle noder, der kommer fรธr den aktuelle node som vist pรฅ nedenstรฅende skรฆrm.
I udtrykket nedenfor identificerer det alle input-elementerne fรธr "LOGIN"-knappen, dvs Bruger ID og adgangskode input element.
Xpath=//*[@type='submit']//preceding::input
Der er 2 "input" noder, der matcher ved at bruge "forudgรฅende" akse. Hvis du vil fokusere pรฅ et bestemt element, kan du bruge nedenstรฅende XPath:
Xpath=//*[@type='submit']//preceding::input[1]
Du kan รฆndre xpath i henhold til kravet ved at sรฆtte [1],[2]โฆโฆโฆโฆog sรฅ videre.
5) Fรธlgende sรธskende
Vรฆlg fรธlgende sรธskende til kontekstnoden. Sรธskende er pรฅ samme niveau som den aktuelle node som vist pรฅ nedenstรฅende skรฆrm. Det vil finde elementet efter den aktuelle node.
xpath=//*[@type='submit']//following-sibling::input
En input noder matcher ved at bruge "fรธlgende-sรธskende"-aksen.
6) Forรฆlder
Vรฆlger forรฆlderen til den aktuelle node som vist pรฅ nedenstรฅende skรฆrm.
Xpath=//*[@id='rt-feature']//parent::div
Der er 65 "div"-knuder, der matcher ved at bruge "forรฆlder"-aksen. Hvis du vil fokusere pรฅ et bestemt element, kan du bruge nedenstรฅende XPath:
Xpath=//*[@id='rt-feature']//parent::div[1]
Du kan รฆndre XPath i henhold til kravet ved at sรฆtte [1],[2]โฆโฆโฆโฆog sรฅ videre.
7) Selv
Vรฆlger den aktuelle node eller 'selv' betyder, at det angiver selve knudepunktet som vist pรฅ nedenstรฅende skรฆrm.
En node matcher ved at bruge "selv" akse. Den finder altid kun รฉn node, da den reprรฆsenterer selv-element.
Xpath =//*[@type='password']//self::input
8) Efterkommer
Vรฆlger efterkommerne af den aktuelle node som vist pรฅ nedenstรฅende skรฆrm.
I det nedenstรฅende udtryk identificerer det alle elementets efterkommere til det aktuelle element (rammeelement 'Main body surround'), hvilket betyder nede under noden (child node, grandchild node, osv.).
Xpath=//*[@id='rt-feature']//descendant::a
Der er 12 "link"-knuder, der matcher ved at bruge "efterkommer"-aksen. Hvis du vil fokusere pรฅ et bestemt element, kan du bruge nedenstรฅende XPath:
Xpath=//*[@id='rt-feature']//descendant::a[1]
Du kan รฆndre XPath i henhold til kravet ved at sรฆtte [1],[2]โฆโฆโฆโฆog sรฅ videre.
Ofte Stillede Spรธrgsmรฅl
Resumรฉ
XPath er pรฅkrรฆvet for at finde et element pรฅ websiden for at udfรธre en handling pรฅ det pรฅgรฆldende element.
- Der er to typer selen XPath:
- Absolut XPath
- Relativ XPath
- XPath-akser er de metoder, der bruges til at finde dynamiske elementer, som ellers ikke er mulige at finde med normal XPath-metode
- XPath-udtryk vรฆlg noder eller liste over noder pรฅ basis af attributter som ID, Navn, Klassenavn osv. fra XML-dokumentet.
Tjek ogsรฅ:- Selenium Tutorial for begyndere: Lรฆr WebDriver pรฅ 7 dage
















