XPath inn Selenium: Opplæringen

Hva er XPath i Selenium?

XPath inn Selenium er en XML-bane som brukes til å navigere gjennom HTML-strukturen på siden. Det er en syntaks eller et språk for å finne et hvilket som helst element på en nettside ved hjelp av XML-baneuttrykk. XPath kan brukes for både HTML- og XML-dokumenter for å finne plasseringen til ethvert element på en nettside ved hjelp av HTML DOM-struktur.

In Selenium automatisering, hvis elementene ikke blir funnet av de generelle lokalisatorene som id, klasse, navn, etc. så brukes XPath til å finne et element på nettsiden.

I denne opplæringen vil vi lære om Xpath og forskjellige XPath-uttrykk for å finne de komplekse eller dynamiske elementene, hvis attributter endres dynamisk ved oppdatering eller andre operasjoner.

XPath-syntaks

XPath inneholder banen til elementet som ligger på nettsiden. Standard XPath-syntaks for å lage XPath er.

Xpath=//tagname[@attribute='value']

Grunnformatet til XPath i selen er forklart nedenfor med skjermbilde.

XPath-syntaks
Grunnleggende format for XPath
  • // : Velg gjeldende node.
  • Tagnavn: Merkenavnet til den aktuelle noden.
  • @: Velg attributt.
  • Egenskap: Attributtnavn på noden.
  • Verdi: Verdien av attributtet.

For å finne elementet på nettsider nøyaktig, finnes det forskjellige typer locatorer:

XPath-lokalisere Finn forskjellige elementer på websiden
ID For å finne elementet etter ID for elementet
Klassenavn For å finne elementet etter klassenavn på elementet
Navn For å finne elementet etter navnet på elementet
Linktekst For å finne elementet etter teksten i lenken
XPath XPath kreves for å finne det dynamiske elementet og gå mellom ulike elementer på nettsiden
CSS-bane CSS-stien lokaliserer også elementer som ikke har noe navn, klasse eller ID.

Typer X-bane

Det finnes to typer XPath:

1) Absolutt XPath

2) Relativ XPath

Absolutt XPath

Det er den direkte måten å finne elementet på, men ulempen med den absolutte XPath er at hvis det er noen endringer i banen til elementet, så mislykkes XPath.

Nøkkelkarakteristikken til XPath er at den begynner med den enkle skråstreken(/) , som betyr at du kan velge elementet fra rotnoden.

Nedenfor er eksemplet på et absolutt Xpath-uttrykk for elementet vist på skjermen nedenfor.

MERK: Du kan trene følgende XPath-øvelse på dette https://demo.guru99.com/test/selenium-xpath.html

Klikk her. hvis videoen ikke er tilgjengelig

Absolutt 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]

Absolutt XPath
Absolutt XPath

Relativ Xpath

Relativ Xpath starter fra midten av HTML DOM-strukturen. Den starter med dobbel skråstrek (//). Den kan søke i elementer hvor som helst på nettsiden, betyr at du ikke trenger å skrive en lang xpath, og du kan starte fra midten av HTML DOM-strukturen. Relativ Xpath er alltid foretrukket siden det ikke er en komplett bane fra rotelementet.

Nedenfor er eksemplet på et relativt XPath-uttrykk for det samme elementet som vises på skjermen nedenfor. Dette er det vanlige formatet som brukes til å finne element av XPath.

Klikk her. hvis videoen ikke er tilgjengelig

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

Relativ XPath
Relativ XPath

Hva er XPath-akser.

XPath-akser søker etter forskjellige noder i XML-dokument fra gjeldende kontekstnode. XPath-akser er metodene som brukes for å finne dynamiske elementer, som ellers ikke er mulig med vanlig XPath-metode uten ID, klassenavn, navn osv. XPath i Selenium inkluderer flere metoder som Contains, AND, Absolute XPath og Relative XPath for å identifisere og lokalisere dynamiske elementer basert på ulike attributter og forhold.

Aksemetoder brukes til å finne de elementene som endres dynamisk ved oppdatering eller andre operasjoner. Det er få aksemetoder som vanligvis brukes i Selenium Webdriver som barn, forelder, stamfar, søsken, forrige, selv, etc.

Hvordan skrive dynamisk XPath i Selenium webdriver

1) Grunnleggende XPath

XPath-uttrykk velg noder eller liste over noder på grunnlag av attributter som ID , navn, klassenavn, etc. fra XML-dokumentet som illustrert nedenfor.

Xpath=//input[@name='uid']

Her er en lenke for å få tilgang til siden https://demo.guru99.com/test/selenium-xpath.html

Grunnleggende XPath
Grunnleggende XPath

Noen mer grunnleggende xpath-uttrykk:

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) Inneholder()

Contains() er en metode som brukes i XPath-uttrykk. Den brukes når verdien av et attributt endres dynamisk, for eksempel påloggingsinformasjon.

Innhold-funksjonen har en evne til å finne elementet med delvis tekst som vist i XPath-eksemplet nedenfor.

I dette eksemplet prøvde vi å identifisere elementet ved å bare bruke delvis tekstverdi for attributtet. I XPath-uttrykket nedenfor brukes delverdien 'sub' i stedet for send-knappen. Det kan observeres at elementet er funnet vellykket.

Den fullstendige verdien av 'Type' er 'send', men bruker bare delvis verdi 'sub'.

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

Den fullstendige verdien av 'navn' er 'btnLogin', men bruker bare delvis verdi 'btn'.

Xpath=//*[contains(@name,'btn')]

I uttrykket ovenfor har vi tatt 'navnet' som et attributt og 'btn' som en delverdi som vist i skjermbildet nedenfor. Dette vil finne 2 elementer (LOGG IN & RESET) ettersom deres 'navn'-attributt begynner med 'btn'.

inneholder()

Tilsvarende har vi i uttrykket nedenfor tatt "id" som et attributt og "melding" som en delverdi. Dette vil finne 2 elementer ('Bruker-ID må ikke være tomt' og 'Passord må ikke være tomt') ettersom dets 'id'-attributt begynner med 'melding'.

Xpath=//*[contains(@id,'message')]

inneholder()

I uttrykket nedenfor har vi tatt "teksten" til lenken som et attributt og "her" som en delverdi som vist i skjermbildet nedenfor. Dette vil finne lenken ('her') ettersom den viser teksten 'her'.

Xpath=//*[contains(text(),'here')]
Xpath=//*[contains(@href,'guru99.com')]

inneholder()

3) Bruk ELLER & OG

I OR-uttrykk brukes to betingelser, enten 1. betingelse ELLER 2. betingelse skal være sann. Det er også aktuelt hvis en betingelse er sann eller kanskje begge deler. Betyr at enhver betingelse skal være sann for å finne elementet.

I XPath-uttrykket nedenfor identifiserer det elementene hvis enkelt eller begge betingelser er sanne.

Xpath=//*[@type='submit' or @name='btnReset']

Utheving av begge elementene som "LOGIN"-element med attributtet 'type' og "RESET"-element med attributtet 'navn'.

Bruke OR & AND

I AND-uttrykk brukes to betingelser, begge betingelser skal være sanne for å finne elementet. Den klarer ikke å finne element hvis en av betingelsene er falske.

Xpath=//input[@type='submit' and @name='btnLogin']

I uttrykket nedenfor, uthever "LOGIN"-elementet siden det har både attributtet "type" og "navn".

Bruke OR & AND

4) Xpath starter-med

XPath starter-med() er en funksjon som brukes for å finne webelementet hvis attributtverdi endres ved oppdatering eller ved andre dynamiske operasjoner på nettsiden. I denne metoden matches startteksten til attributtet for å finne elementet hvis attributtverdi endres dynamisk. Du kan også finne elementer hvis attributtverdi er statisk (ikke endringer).

For eksempel -: Anta at ID-en til et bestemt element endres dynamisk som:

Id=" message12"

Id=" message345"

Id=" message8769"

og så videre.. men den første teksten er den samme. I dette tilfellet bruker vi Start-med uttrykk.

I uttrykket nedenfor er det to elementer med en id som starter "melding" (dvs. 'Bruker-ID må ikke være tomt' og 'Passord må ikke være tomt'). I eksemplet nedenfor finner XPath de elementene hvis 'ID' starter med 'melding'.

Xpath=//label[starts-with(@id,'message')]

Xpath starter-med

5) XPath Text() funksjon

Ocuco XPath text() funksjon er en innebygd funksjon av selen webdriver som brukes til å finne elementer basert på teksten til et webelement. Det hjelper å finne de eksakte tekstelementene, og det lokaliserer elementene i settet med tekstnoder. Elementene som skal lokaliseres bør være i strengform.

I dette uttrykket, med tekstfunksjon, finner vi elementet med eksakt tekstmatch som vist nedenfor. I vårt tilfelle finner vi elementet med teksten "UserID".

Xpath=//td[text()='UserID']

XPath Text() funksjon

XPath-aksemetoder

Disse XPath-aksemetodene brukes til å finne de komplekse eller dynamiske elementene. Nedenfor vil vi se noen av disse metodene.

For å illustrere disse XPath-aksemetodene, vil vi bruke Guru99 bankdemosiden.

1) Følger

Velger alle elementene i dokumentet til gjeldende node( ) [ UserID input box is the current node] som vist i skjermbildet nedenfor.

Xpath=//*[@type='text']//following::input

Følgende

Det er 3 "input"-noder som matcher ved å bruke "følgende" akse-passord, pålogging og tilbakestillingsknapp. Hvis du vil fokusere på et bestemt element, kan du bruke XPath-metoden nedenfor:

Xpath=//*[@type='text']//following::input[1]

Du kan endre XPath i henhold til kravet ved å sette [1],[2]…………og så videre.

Med inngangen som '1', finner skjermbildet nedenfor den spesielle noden som er 'Passord'-inndatabokselementet.

Følgende

2) Stamfar

Forfedreaksen velger alle forfedre-elementer (besteforeldre, overordnede, etc.) til gjeldende node som vist i skjermbildet nedenfor.

I uttrykket nedenfor finner vi forfedreelementet til den nåværende noden ("ENTERPRISE TESTING" node).

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

Ancestor

Det er 13 "div"-noder som matcher ved å bruke "forfedre"-aksen. Hvis du vil fokusere på et bestemt element, kan du bruke XPath nedenfor, hvor du endrer tallet 1, 2 i henhold til dine krav:

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

Du kan endre XPath i henhold til kravet ved å sette [1], [2]…………og så videre.

3) Barn

Velger alle underordnede elementer i gjeldende node (Java) som vist på skjermen nedenfor.

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

Barn

Det er 71 "li"-noder som matcher ved å bruke "barneaksen". Hvis du vil fokusere på et bestemt element, kan du bruke xpath nedenfor:

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

Du kan endre xpath i henhold til kravet ved å sette [1],[2]…………og så videre.

4) Foregående

Velg alle noder som kommer før gjeldende node som vist i skjermbildet nedenfor.

I uttrykket nedenfor identifiserer det alle inngangselementene før "LOGG PÅ"-knappen, dvs Bruker-ID og passord inndataelement.

Xpath=//*[@type='submit']//preceding::input

Forutgående

Det er 2 "input"-noder som matcher ved å bruke "forutgående" akse. Hvis du vil fokusere på et bestemt element, kan du bruke XPath nedenfor:

Xpath=//*[@type='submit']//preceding::input[1]

Du kan endre xpath i henhold til kravet ved å sette [1],[2]…………og så videre.

5) Følge-søsken

Velg følgende søsken til kontekstnoden. Søsken er på samme nivå som den nåværende noden som vist i skjermbildet nedenfor. Den vil finne elementet etter gjeldende node.

xpath=//*[@type='submit']//following-sibling::input

Følger søsken

En inngangsnoder matcher ved å bruke "følgende søsken"-aksen.

6) Foreldre

Velger overordnet til gjeldende node som vist i skjermbildet nedenfor.

Xpath=//*[@id='rt-feature']//parent::div

Parent

Det er 65 "div"-noder som matcher ved å bruke "overordnet"-aksen. Hvis du vil fokusere på et bestemt element, kan du bruke XPath nedenfor:

Xpath=//*[@id='rt-feature']//parent::div[1]

Du kan endre XPath i henhold til kravet ved å sette [1],[2]…………og så videre.

7) Selv

Velger gjeldende node eller "selv" betyr at det indikerer selve noden som vist i skjermbildet nedenfor.

Selv

En node matcher ved å bruke "selv" akse. Den finner alltid bare én node da den representerer selvelement.

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

8) Etterkommer

Velger etterkommere av gjeldende node som vist i skjermbildet nedenfor.

I uttrykket nedenfor identifiserer det alle elementets etterkommere til gjeldende element (rammeelementet 'Hovedkroppsomkrets') som betyr nede under noden (barnnode, barnebarnnode, osv.).

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

Etterkommer

Det er 12 "link"-noder som matcher ved å bruke "etterkommer"-aksen. Hvis du vil fokusere på et bestemt element, kan du bruke XPath nedenfor:

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

Du kan endre XPath i henhold til kravet ved å sette [1],[2]…………og så videre.

Sammendrag

XPath er nødvendig for å finne et element på nettsiden for å utføre en operasjon på det bestemte elementet.

  • Det finnes to typer selen XPath:
    • Absolutt XPath
    • Relativ XPath
  • XPath-akser er metodene som brukes for å finne dynamiske elementer, som ellers ikke er mulig å finne med vanlig XPath-metode
  • XPath-uttrykk velg noder eller liste over noder på grunnlag av attributter som ID, Navn, Klassenavn, etc. fra XML-dokumentet.

Sjekk også: - Selenium Opplæring for nybegynnere: Lær WebDriver på 7 dager

Oppsummer dette innlegget med: