XPath i Selen WebDriver-vejledning: Sådan finder du XPath?

Indholdsfortegnelse:

Anonim

I Selen-automatisering, hvis elementerne ikke findes af de generelle lokaliseringer som id, klasse, navn osv., Bruges XPath til at finde et element på websiden.

I denne vejledning 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.

I denne XPath-tutorial lærer du-

  • Hvad er XPath?
  • Typer af X-sti
    • Absolut XPath
    • Relativ XPath
  • Grundlæggende XPath
  • Indeholder()
  • Brug af OR & AND
  • Starter-med-funktion
  • Tekst()
  • XPath akser metoder
    • Følge
    • Forfader
    • Barn
    • Forudgående
    • Efterfølgende søskende
    • Forælder
    • Selv
    • Efterkommer

Hvad er XPath i selen?

XPath in Selenium er en XML-sti, der bruges til at navigere gennem HTML-strukturen på siden. 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.

Det grundlæggende format for XPath i selen forklares nedenfor med skærmbillede.

Grundlæggende format for XPath

Syntaks for XPath-selen:

XPath indeholder stien til elementet placeret på websiden. Standard XPath-syntaks til oprettelse af XPath er.

Xpath = // tagname [@ attribute = 'value']
  • //: Vælg den aktuelle node.
  • Tagname: Tagname for den bestemte node.
  • @: Vælg attribut.
  • Attribut: Attributnavn på noden.
  • Værdi: Attributens værdi.

For at finde elementet på websider præcist er der forskellige typer lokaliseringer:

XPath Locators Find forskellige elementer på websiden
ID For at finde elementet efter elementets ID
Klassenavn For at finde elementet efter klassens navn på elementet
Navn For at finde elementet ved navn på elementet
Linktekst For at finde elementet efter teksten i linket
XPath XPath krævet for at finde det dynamiske element og krydse mellem forskellige elementer på websiden
CSS-sti CSS-sti 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 sker ændringer i elementets sti, mislykkes XPath.

Nøglekarakteristikken ved XPath er, at det begynder med det enkelte skråstreg fremad (/), hvilket betyder, at du kan vælge elementet fra rodnoden.

Nedenfor er eksemplet på et absolut xpath-udtryk for elementet vist i nedenstående skærmbillede.

BEMÆRK: Du kan øve følgende XPath-øvelse på denne http://demo.guru99.com/test/selenium-xpath.html

Klik her, 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

Relativ Xpath:

Relativ Xpath starter fra midten af ​​HTML DOM-strukturen. Det starter med dobbelt skråstreg fremad (//). Det kan søge i elementer overalt på websiden, betyder ikke behov for 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 relativ XPath-udtryk for det samme element vist på nedenstående skærmbillede. Dette er det almindelige format, der bruges til at finde element af XPath.

Klik her, hvis videoen ikke er tilgængelig

Relativ XPath: // div [@ class = 'featured-box cloumnsize1'] // h4 [1] // b [1]

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.

Aksemetoder bruges til at finde de elementer, som dynamisk ændres ved opdatering eller andre operationer. Der er få aksemetoder, der almindeligvis bruges i Selen Webdriver som barn, forælder, forfader, søskende, foregående, selv osv.

Brug af XPath Håndtering af komplekse og dynamiske elementer i selen

1) Grundlæggende XPath:

XPath-udtryk vælger noder eller en liste over noder på basis af attributter som ID, navn, klassenavn osv. 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

Nogle mere basale 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='//cdn.guru99.com/images/home/java.png.webp ']

2) Indeholder ():

Indeholder () er en metode, der bruges i XPath-udtryk. Det bruges, når værdien af ​​en attribut ændres dynamisk, for eksempel loginoplysninger.

Indeholdelsesfunktionen har mulighed for at finde elementet med delvis tekst som vist i nedenstående XPath-eksempel.

I dette eksempel forsøgte vi at identificere elementet ved blot at bruge attributten delvis tekstværdi. I nedenstående XPath-udtryk bruges delvis værdi 'sub' i stedet for send-knappen. Det kan observeres, at elementet findes med succes.

Den komplette værdi af 'Type' er 'indsend', men bruger kun delvis værdi 'sub'.

Xpath = // * [indeholder (@ type, 'sub')] 

Den komplette værdi af 'navn' er 'btnLogin', men bruger kun delvis værdi 'btn'.

Xpath = // * [indeholder (@ navn, 'btn')]

I ovenstående udtryk har vi taget 'navnet' som en attribut og 'btn' som en delvis værdi som vist i nedenstående skærmbillede. Dette finder 2 elementer (LOGIN & RESET), da deres 'navn' attribut begynder med 'btn'.

På samme måde har vi i nedenstående udtryk taget 'id' som en attribut og 'besked' som en delvis værdi. Dette finder 2 elementer ('Bruger-ID må ikke være tomt' & 'Adgangskode må ikke være tomt'), da dets 'navn' attribut begynder med 'besked'.

Xpath = // * [indeholder (@ id, 'besked')] 

I nedenstående udtryk har vi taget linkets "tekst" som attribut og 'her' som en delvis værdi som vist i nedenstående skærmbillede. Dette finder linket ('her'), da det viser teksten 'her'.

Xpath = // * [indeholder (tekst (), 'her')]Xpath = // * [indeholder (@ href, 'guru99.com')] 

3) Brug af OR & AND:

I ELLER-udtryk anvendes to betingelser, om 1. betingelse ELLER 2. betingelse skal være sand. Det gælder også, hvis en eller anden betingelse er sand eller måske begge dele. Betyder, at en hvilken som helst betingelse skal være sand for at finde elementet.

I nedenstående XPath-udtryk identificeres det de elementer, hvis enkelte eller begge betingelser er sande.

Xpath = // * [@ type = 'send' eller @ name = 'btnReset']

Fremhæver begge elementer som "LOGIN" -element med attribut 'type' og 'RESET' -element med attribut 'name'.

I OG-udtryk bruges to betingelser, begge betingelser skal være sande for at finde elementet. Det finder ikke element, hvis en enkelt betingelse er falsk.

Xpath = // input [@ type = 'send' og @ name = 'btnLogin']

I nedenstående udtryk fremhæves 'LOGIN' element, da det både har attribut 'type' og 'navn'.

4) Xpath starter med

XPath starter med () er en funktion, der bruges til at finde webelementet, hvis attributværdi bliver ændret ved opdatering eller ved andre dynamiske handlinger 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 = "besked12"

Id = "besked345"

Id = "besked8769"

og så videre ... men den oprindelige tekst er den samme. I dette tilfælde bruger vi Start-med-udtryk.

I nedenstående udtryk er der to elementer med en id, der starter "besked" (dvs. "Bruger-ID må ikke være tomt" & "Adgangskode må ikke være tomt"). I nedenstående eksempel finder XPath de elementer, hvis 'ID' starter med 'besked'.

Xpath = // label [starter-med (@ id, 'besked')]

5) XPath-tekst () -funktion

Den XPath tekst () funktion er en indbygget funktion af selen webdriver som anvendes til at lokalisere elementer baseret på teksten til en web element. Det hjælper med at finde de nøjagtige tekstelementer, og det lokaliserer elementerne inden for sættet med tekstnoder. De elementer, der skal placeres, 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 () = 'Bruger-ID'] 

6) XPath akser metoder:

Disse XPath-aksemetoder bruges til at finde de komplekse eller dynamiske elementer. Nedenfor ser vi nogle af disse metoder.

For at illustrere disse XPath-akser-metoden bruger vi Guru99-bankens demo-side.

a) Følgende:

Vælger alle elementer i dokumentet for den aktuelle node () [UserID-inputboks er den aktuelle node] som vist på nedenstående skærmbillede.

Xpath = // * [@ type = 'text'] // følgende :: input

Der er 3 "input" noder, der matcher ved hjælp af "følgende" akse-adgangskode, login og reset-knap. Hvis du vil fokusere på et bestemt element, kan du bruge nedenstående XPath-metode:

Xpath = // * [@ type = 'text'] // følgende :: 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 det bestemte knudepunkt, der er 'Password' inputbokselement.

b) Forfader:

Forfaderaksen vælger alle forfædres element (bedsteforælder, forælder osv.) For den aktuelle node som vist på nedenstående skærmbillede.

I nedenstående udtryk finder vi forfædreelement af den aktuelle node ("ENTERPRISE TESTING" node).

Xpath = // * [text () = 'Enterprise Testing'] // forfader :: div

Der er 13 "div" noder, der matcher ved hjælp af "forfader" akse. Hvis du vil fokusere på et bestemt element, kan du bruge nedenstående XPath, hvor du ændrer tallet 1, 2 efter dine krav:

Xpath = // * [text () = 'Enterprise Testing'] // forfader :: div [1]

Du kan ændre XPath i henhold til kravet ved at sætte [1], [2]

… og så videre.

c) Barn:

Vælger alle underordnede elementer i den aktuelle node (Java) som vist på nedenstående skærmbillede.

Xpath = // * [@ id = 'java_technologies'] // barn :: li

Der er 71 "li" noder, der matcher ved hjælp af "under" akse. Hvis du vil fokusere på et bestemt element, kan du bruge nedenstående xpath:

Xpath = // * [@ id = 'java_technologies'] // barn :: li [1]

Du kan ændre xpath i henhold til kravet ved at sætte [1], [2]

… og så videre.

d) Forudgående:

Vælg alle noder, der kommer før den aktuelle node, som vist på nedenstående skærmbillede.

I nedenstående udtryk identificerer det alle inputelementerne før "LOGIN" -knappen, der er Userid og password- inputelement.

Xpath = // * [@ type = 'send'] // foregående :: input

Der er 2 "input" noder, der matcher ved hjælp af "foregående" akse. Hvis du vil fokusere på et bestemt element, kan du bruge nedenstående XPath:

Xpath = // * [@ type = 'send'] // foregående :: input [1]

Du kan ændre xpath i henhold til kravet ved at sætte [1], [2]

… og så videre.

e) Efterfølgende søskende:

Vælg følgende søskende til kontekstnoden. Søskende er på samme niveau som den aktuelle knude som vist på nedenstående skærm. Det finder elementet efter den aktuelle node.

 xpath = // * [@ type = 'send'] // følgende-søskende :: input

Én inputknudepunkter matcher ved hjælp af "følgesøskende" akse.

f) Forælder:

Vælger forælder til den aktuelle node som vist på nedenstående skærmbillede.

Xpath = // * [@ id = 'rt-funktion'] // forælder :: div

Der er 65 "div" noder, der matcher ved hjælp af "overordnet" akse. Hvis du vil fokusere på et bestemt element, kan du bruge nedenstående XPath:

Xpath = // * [@ id = 'rt-funktion'] // forælder :: div [1]

Du kan ændre XPath i henhold til kravet ved at sætte [1], [2]

… og så videre.

g) Selv:

Vælger den aktuelle node eller 'selv' betyder, at den angiver selve noden som vist på nedenstående skærmbillede.

En node-matching ved hjælp af "selv" akse. Den finder altid kun en node, da den repræsenterer selvelement.

Xpath = // * [@ type = 'password'] // self :: input

h) Efterkommer:

Vælger efterkommere af den aktuelle node som vist på nedenstående skærmbillede.

I nedenstående udtryk identificerer det alle elementets efterkommere til det aktuelle element ('Main body surround' rammeelement), hvilket betyder nede under noden (undernode, barnebarnnode osv.).

Xpath = // * [@ id = 'rt-funktion'] // efterkommer :: a

Der er 12 "link" noder, der matcher ved hjælp af "descendant" akse. Hvis du vil fokusere på et bestemt element, kan du bruge nedenstående XPath:

Xpath = // * [@ id = 'rt-feature'] // efterkommer :: a [1]

Du kan ændre XPath i henhold til kravet ved at sætte [1], [2]

… og så videre.

Resumé:

XPath kræves for at finde et element på websiden for at udføre en operation på det pågældende element.

  • Der er to typer selen XPath:
    • Absolut XPath
    • Relativ XPath
  • XPath Axes er de metoder, der bruges til at finde dynamiske elementer, som ellers ikke er mulige at finde ved normal XPath-metode
  • XPath-udtryk vælger noder eller en liste over noder på basis af attributter som ID, navn, klassenavn osv. Fra XML-dokumentet.