XPath u vodiču za Selenium WebDriver: Kako pronaći XPath?

Sadržaj:

Anonim

U automatizaciji selena, ako elementi ne nalaze opći lokatori poput id, klase, imena itd., Tada se XPath koristi za pronalaženje elementa na web stranici.

U ovom uputstvu naučit ćemo o xpathu i različitim XPath izrazima kako bismo pronašli složene ili dinamičke elemente čiji se atributi dinamički mijenjaju pri osvježavanju ili bilo kojim operacijama.

U ovom XPath tutorialu naučit ćete-

  • Što je XPath?
  • Vrste X-puta
    • Apsolutni XPath
    • Relativni XPath
  • Osnovni XPath
  • Sadrži ()
  • Korištenje OR & AND
  • Počinje s funkcijom
  • Tekst()
  • Metode osi XPath
    • Slijedeći
    • Predak
    • Dijete
    • Prethodi
    • Sljedbeni brat
    • Roditelj
    • Ja
    • Potomak

Što je XPath u selenu?

XPath u Seleniju je XML put koji se koristi za navigaciju kroz HTML strukturu stranice. To je sintaksa ili jezik za pronalaženje bilo kojeg elementa na web stranici pomoću izraza XML puta. XPath se može koristiti i za HTML i za XML dokumente kako bi se pronašlo mjesto bilo kojeg elementa na web stranici koristeći HTML DOM strukturu.

Osnovni format XPath u selenu objašnjen je u nastavku sa snimkom zaslona.

Osnovni format XPath-a

Sintaksa za XPath selen:

XPath sadrži put elementa koji se nalazi na web stranici. Standardna sintaksa XPath za stvaranje XPath je.

Xpath = // naziv oznake [@ attribute = 'value']
  • //: Odaberite trenutni čvor.
  • Oznaka: Oznaka određenog čvora.
  • @: Odaberite atribut.
  • Atribut: Ime atributa čvora.
  • Vrijednost: Vrijednost atributa.

Za točan pronalazak elementa na web stranicama postoje različite vrste lokatora:

Lokatori XPath Pronađite različite elemente na web stranici
iskaznica Da biste pronašli element prema ID-u elementa
Naziv klase Da biste pronašli element prema nazivu klase elementa
Ime Da biste pronašli element po imenu elementa
Tekst veze Da biste pronašli element prema tekstu veze
XPath XPath potreban za pronalaženje dinamičkog elementa i prelazak između različitih elemenata web stranice
CSS put CSS staza također pronalazi elemente koji nemaju ime, klasu ili ID.

Vrste X-puta

Postoje dvije vrste XPath:

1) Apsolutni XPath

2) Relativni XPath

Apsolutni XPath:

Izravni je način za pronalaženje elementa, ali nedostatak apsolutnog XPath-a je taj što ako na putu do elementa postoje neke promjene, tada XPath ne uspije.

Ključna karakteristika XPath-a je da započinje jednom kosom crtom naprijed (/), što znači da element možete odabrati iz korijenskog čvora.

Ispod je primjer apsolutnog xpath izraza elementa prikazanog na donjem zaslonu.

NAPOMENA: Sljedeću vježbu XPath možete vježbati na ovom http://demo.guru99.com/test/selenium-xpath.html

Kliknite ovdje ako videozapis nije dostupan

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

Apsolutni XPath

Relativni Xpath:

Relativni Xpath započinje od sredine HTML DOM strukture. Počinje dvostrukom kosom crtom naprijed (//). Može pretraživati ​​elemente bilo gdje na web stranici, što znači da nema potrebe za pisanjem dugačkog xpath-a i možete početi od sredine HTML DOM strukture. Relativni Xpath uvijek je poželjniji jer nije cjelovita staza od korijenskog elementa.

Ispod je primjer relativnog XPath izraza istog elementa prikazanog na donjem zaslonu. Ovo je uobičajeni format koji se XPath nalazi za pronalaženje elementa.

Kliknite ovdje ako videozapis nije dostupan

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

Relativni XPath

Što su XPath osi.

Osi XPath pretražuju različite čvorove u XML dokumentu iz trenutnog kontekstnog čvora. XPath osi su metode korištene za pronalaženje dinamičkih elemenata, što inače nije moguće uobičajenom XPath metodom koja nema ID, naziv klase, ime itd.

Metode osi koriste se za pronalaženje onih elemenata koji se dinamički mijenjaju pri osvježavanju ili bilo kojim drugim operacijama. Postoji nekoliko metoda osi koje se obično koriste u Selenium Webdriver-u, poput djeteta, roditelja, pretka, brata i sestre, prethodnika, sebe itd.

Korištenje XPath Handling složenih i dinamičkih elemenata u selenu

1) Osnovni XPath:

Izraz XPath odabire čvorove ili popis čvorova na temelju atributa kao što su ID, Ime, Ime klase itd. Iz XML dokumenta kao što je prikazano u nastavku.

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

Evo poveznice za pristup stranici http://demo.guru99.com/test/selenium-xpath.html

Osnovni XPath

Još nekoliko osnovnih izraza xpath:

Xpath = // unos [@ type = 'text']Xpath = // oznaka [@ id = 'message23']Xpath = // ulaz [@ value = 'RESET']Xpath = // * [@ class = 'barone']Xpath = // a [@ href = 'http: //demo.guru99.com/']Xpath = //img[@src='//cdn.guru99.com/images/home/java.png.webp ']

2) Sadrži ():

Sadrži () je metoda koja se koristi u izrazu XPath. Koristi se kada se vrijednost bilo kojeg atributa dinamički mijenja, na primjer, podaci za prijavu.

Značajka sadrži ima mogućnost pronalaska elementa s djelomičnim tekstom kao što je prikazano u donjem primjeru XPath.

U ovom smo primjeru pokušali identificirati element korištenjem djelomične tekstualne vrijednosti atributa. U donjem XPath izrazu koristi se djelomična vrijednost 'sub' umjesto gumba za slanje. Može se primijetiti da je element uspješno pronađen.

Cjelovita vrijednost "Type" je "submit", ali se koristi samo djelomična vrijednost "sub".

Xpath = // * [sadrži (@ tip, 'pod')] 

Kompletna vrijednost "name" je "btnLogin", ali koristi se samo djelomična vrijednost "btn".

Xpath = // * [sadrži (@ ime, 'btn')]

U gornjem izrazu uzeli smo 'ime' kao atribut, a 'btn' kao djelomičnu vrijednost kao što je prikazano na donjem snimku zaslona. Pronaći će se 2 elementa (PRIJAVA & PONOVNO PONOVO) jer njihov atribut 'name' počinje s 'btn'.

Slično tome, u donjem smo izrazu uzeli 'id' kao atribut, a 'message' kao djelomičnu vrijednost. Pronaći će se 2 elementa ('User-ID ne smije biti prazan' & 'Lozinka ne smije biti prazno') jer njegov atribut 'name' počinje s 'message'.

Xpath = // * [sadrži (@ id, 'poruka')] 

U donjem izrazu uzeli smo "tekst" veze kao atribut, a "ovdje" kao djelomičnu vrijednost kao što je prikazano na donjem snimku zaslona. Ovo će pronaći vezu ('ovdje') jer prikazuje tekst 'ovdje'.

Xpath = // * [sadrži (tekst (), 'ovdje')]Xpath = // * [sadrži (@ href, 'guru99.com')] 

3) Korištenje OR & AND:

U izrazu OR koriste se dva uvjeta, da li 1. uvjet ILI drugi uvjet treba biti istinit. Također je primjenjivo ako je bilo koji uvjet istinit ili možda oba. Znači da bi bilo koji uvjet trebao biti istinit za pronalaženje elementa.

U donjem XPath izrazu identificira elemente čiji su pojedinačni ili oba uvjeta istiniti.

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

Istaknuvši oba elementa kao element "PRIJAVA" koji ima atribut "tip" i element "RESET" koji ima atribut "ime".

U izrazu AND koriste se dva uvjeta, oba bi uvjeta trebala biti istinita za pronalaženje elementa. Ne uspijeva pronaći element ako je bilo koji uvjet netačan.

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

U donjem izrazu, isticanje elementa 'PRIJAVA' jer ima i atribut 'tip' i 'ime'.

4) Xpath započinje sa

XPath start-with () je funkcija koja se koristi za pronalaženje web elementa čija se vrijednost atributa mijenja pri osvježavanju ili drugim dinamičkim operacijama na web stranici. U ovoj se metodi polazi početni tekst atributa kako bi se pronašao element čija se vrijednost atributa dinamički mijenja. Također možete pronaći elemente čija je vrijednost atributa statična (ne promjene).

Na primjer -: Pretpostavimo da se ID određenog elementa dinamički mijenja poput:

Id = "message12"

Id = "message345"

Id = "message8769"

i tako dalje ... ali početni tekst je isti. U ovom slučaju koristimo izraz Start-with.

U donjem izrazu postoje dva elementa s id-om koji započinje "poruku" (tj. 'User-ID ne smije biti prazan' & 'Lozinka ne smije biti prazna'). U donjem primjeru XPath pronalazi one elemente čiji 'ID' počinje s 'porukom'.

Xpath = // oznaka [započinje s (@ id, 'poruka')]

5) Funkcija XPath Text ()

Funkcija XPath text () ugrađena je u funkciju selenovog web pogonitelja koja se koristi za lociranje elemenata na temelju teksta web elementa. Pomaže u pronalaženju točnih elemenata teksta i locira elemente unutar skupa tekstnih čvorova. Elementi koji se trebaju nalaziti trebaju biti u obliku niza.

U ovom izrazu, s funkcijom teksta, pronalazimo element koji se točno podudara s tekstom kao što je prikazano u nastavku. U našem slučaju pronalazimo element s tekstom "UserID".

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

6) Metode osi XPath:

Ove metode XPath osi koriste se za pronalaženje složenih ili dinamičkih elemenata. U nastavku ćemo vidjeti neke od ovih metoda.

Za ilustraciju ove metode XPath osi poslužit ćemo se demo prezentacijom banke Guru99.

a) Slijedi:

Odabire sve elemente u dokumentu trenutnog čvora () [Okvir za unos UserID je trenutni čvor] kao što je prikazano na donjem zaslonu.

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

Postoje 3 "ulazna" čvora koja se podudaraju pomoću "slijedeće" osi - lozinke, gumba za prijavu i resetiranje. Ako se želite usredotočiti na bilo koji određeni element, možete koristiti donju XPath metodu:

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

Možete promijeniti XPath prema zahtjevu stavljanjem [1], [2]

… i tako dalje.

S ulazom kao '1', donji snimak zaslona pronalazi određeni čvor koji je element okvira za unos 'Lozinka'.

b) Predak:

Os predaka odabire sve elemente predaka (baka i djed, roditelj itd.) Trenutnog čvora kako je prikazano na donjem zaslonu.

U donjem izrazu nalazimo element pretka trenutnog čvora (čvor "ISPITIVANJE PODUZEĆA").

Xpath = // * [text () = 'Testiranje poduzeća'] // predak :: div

Postoji 13 "div" čvorova koji se podudaraju pomoću osi "predak". Ako se želite usredotočiti na bilo koji određeni element, možete koristiti donji XPath, gdje mijenjate broj 1, 2 prema vašem zahtjevu:

Xpath = // * [text () = 'Testiranje poduzeća'] // predak :: div [1]

Možete promijeniti XPath prema zahtjevu stavljanjem [1], [2]

… i tako dalje.

c) Dijete:

Odabire sve podređene elemente trenutnog čvora (Java) kako je prikazano na donjem zaslonu.

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

Postoji 71 "li" čvor koji se podudara pomoću "podređene" osi. Ako se želite usredotočiti na bilo koji određeni element, tada možete koristiti donji xpath:

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

Možete promijeniti xpath prema zahtjevu stavljanjem [1], [2]

… i tako dalje.

d) Prethodno:

Odaberite sve čvorove koji dolaze ispred trenutnog čvora kako je prikazano na donjem zaslonu.

U donjem izrazu identificira sve elemente unosa prije gumba "PRIJAVA" koji je element unosa Userid i lozinke .

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

Postoje 2 "ulazna" čvora koja se podudaraju pomoću "prethodne" osi. Ako se želite usredotočiti na bilo koji određeni element, možete koristiti donji XPath:

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

Možete promijeniti xpath prema zahtjevu stavljanjem [1], [2]

… i tako dalje.

e) Sljedbenici:

Odaberite sljedeću braću i sestre kontekstnog čvora. Braća i sestre su na istoj razini trenutnog čvora kao što je prikazano na donjem zaslonu. Pronaći će element nakon trenutnog čvora.

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

Jedan ulazni čvorovi koji se podudaraju pomoću osi "sljedbeni brat".

f) Roditelj:

Odabire nadređeni dio trenutnog čvora kako je prikazano na donjem zaslonu.

Xpath = // * [@ id = 'rt-feature'] // nadređeni :: div

Postoji 65 "div" čvorova koji se podudaraju pomoću "roditeljske" osi. Ako se želite usredotočiti na bilo koji određeni element, možete koristiti donji XPath:

Xpath = // * [@ id = 'rt-feature'] // nadređeni :: div [1]

Možete promijeniti XPath prema zahtjevu stavljanjem [1], [2]

… i tako dalje.

g) Ja:

Odabire trenutni čvor ili 'self' znači da označava sam čvor kao što je prikazano na donjem zaslonu.

Podudaranje jednog čvora pomoću osi "self". Uvijek pronalazi samo jedan čvor jer predstavlja samoelement.

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

h) Potomak:

Odabire potomke trenutnog čvora kako je prikazano na donjem zaslonu.

U donjem izrazu identificira sve potomke elementa trenutnom elementu (element okvira "Main body surround"), što znači dolje ispod čvora (podređeni čvor, unuk čvor, itd.).

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

Postoji 12 čvorova "veza" koji se podudaraju pomoću osi "potomak". Ako se želite usredotočiti na bilo koji određeni element, možete koristiti donji XPath:

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

Možete promijeniti XPath prema zahtjevu stavljanjem [1], [2]

… i tako dalje.

Sažetak:

XPath je potreban za pronalaženje elementa na web stranici kako bi izvršio operaciju nad tim određenim elementom.

  • Postoje dvije vrste selena XPath:
    • Apsolutni XPath
    • Relativni XPath
  • XPath Axes su metode korištene za pronalaženje dinamičkih elemenata, koje inače nije moguće pronaći uobičajenom XPath metodom
  • Izraz XPath odabire čvorove ili popis čvorova na temelju atributa kao što su ID, Ime, Ime klase itd. Iz XML dokumenta.