XPath ind Selenium: Tutorial

XPath ind Selenium

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.

XPath-syntaks
Grundlรฆggende format af XPath
  • // : 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]

Absolut XPath
Absolut XPath

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]

Relativ XPath
Relativ XPath

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

Grundlรฆggende XPath
Grundlรฆggende XPath

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'.

Indeholder()

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')]

Indeholder()

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')]

Indeholder()

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'.

Brug af OR & AND

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'.

Brug af OR & AND

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')]

Xpath starter-med

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 Text() Funktion

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

Fรธlgende

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.

Fรธlgende

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

Forfader

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

Barn

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

Forudgรฅende

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

Fรธlger sรธskende

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

Parent

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.

Self

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

efterkommer

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

XPath (XML Path Language) bruges til at navigere gennem elementer og attributter i en XML eller HTML-dokument. Det hjรฆlper med at identificere og hente specifikke noder, hvilket gรธr det essentielt i webscrapingping, XML-databehandling og automatiserede testvรฆrktรธjer som f.eks. Selenium til at finde webelementer.

Brug XPath, nรฅr du har brug for at finde komplekse eller dynamisk skiftende webelementer, der ikke let kan identificeres ved hjรฆlp af enklere locatorer som ID eller klassenavn. Det er ideelt til at navigere i hierarkiske strukturer, vรฆlge noder efter attributter og hรฅndtere elementer uden unikke identifikatorer.

Lokaliseringsvรฆrktรธjer i XPath er udtryk, der bruges til at identificere elementer i et dokuments struktur. De angiver stier til noder ved hjรฆlp af attributter, tekst, hierarki eller position. Almindelige lokaliseringsstrategier omfatter valg af elementer efter tagnavn, attributvรฆrdier, delvise match eller logiske kombinationer af betingelser.

XPath findes i to typer: Absolut XPath og Relativ XPath.

  • Absolut XPath starter fra rodnoden (f.eks. /html/body/โ€ฆ) og angiver den fulde sti.
  • Relativ XPath starter fra en hvilken som helst node (f.eks. //div[@id='indhold']) og er mere fleksibel og nemmere at vedligeholde.

En enkelt skrรฅstreg (/) vรฆlger noder direkte under roden eller den aktuelle node, hvilket reprรฆsenterer en absolut sti. En dobbelt skrรฅstreg (//) sรธger efter noder hvor som helst i dokumentet, uanset hierarki, hvilket gรธr det mere fleksibelt at finde elementer uden at angive den fulde sti.

Ja, XPath skelner mellem store og smรฅ bogstaver. Elementnavne, attributnavne og vรฆrdier skal stemme overens med prรฆcis, som de vises i dokumentet. For eksempel behandles //div og //DIV forskelligt. For at hรฅndtere forskel pรฅ store og smรฅ bogstaver kan funktioner som translate() bruges i XPath-udtryk.

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

Opsummer dette indlรฆg med: