XPath ind Selenium: Hvordan finder og skriver man? (Tekst, Indeholder OG)

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 locatorer som id, klasse, navn osv., så 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 http://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 efter 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.

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 http://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='http://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ævelse af begge elementer som "LOGIN "-element med attributten 'type' og "RESET"-element med attributten 'navn'.

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-metoder, vil vi bruge Guru99 bank-demo-webstedet.

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.

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