XPath u Selenium: Kako pronaći i pisati? (Tekst, Sadrži, I)
U čemu je XPath Selenium?
XPath u Selenium je XML staza koja se koristi za navigaciju kroz HTML strukturu stranice. To je sintaksa ili jezik za pronalaženje bilo kojeg elementa na web stranici pomoću XML izraza staze. XPath se može koristiti i za HTML i za XML dokumente za pronalaženje lokacije bilo kojeg elementa na web stranici pomoću HTML DOM strukture.
In Selenium automatizacija, ako elementi nisu pronađeni općim lokatorima kao što su id, class, name itd. onda se XPath koristi za pronalaženje elementa na web stranici.
U ovom vodiču 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 kojoj operaciji.
Sintaksa XPath
XPath sadrži putanju elementa koji se nalazi na web stranici. Standardna XPath sintaksa za stvaranje XPatha je.
Xpath=//tagname[@attribute='value']
Osnovni format XPath-a u selenu objašnjen je u nastavku sa snimkom zaslona.
- // : Odaberite trenutni čvor.
- Naziv oznake: Naziv oznake određenog čvora.
- @: Odaberite atribut.
- Atribut: Naziv atributa čvora.
- Vrijednost: Vrijednost atributa.
Za točno pronalaženje elementa na web stranicama postoje različite vrste lokatora:
XPath lokatori | Pronađite različite elemente na web stranici |
---|---|
ID | Da biste pronašli element prema ID-u elementa |
Ime razreda | Da biste pronašli element prema nazivu klase elementa |
Ime i Prezime | Da biste pronašli element prema imenu elementa |
Tekst veze | Da biste pronašli element prema tekstu veze |
XPath | XPath potreban za pronalaženje dinamičkog elementa i kretanje između različitih elemenata web stranice |
CSS put | CSS staza također locira elemente koji nemaju naziv, klasu ili ID. |
Vrste X-puta
Postoje dvije vrste XPath-a:
1) Apsolutni XPath
2) Relativni XPath
Apsolutni XPath
To je izravan način za pronalaženje elementa, ali nedostatak apsolutnog XPatha je taj što ako postoje bilo kakve promjene u putanji elementa, onda taj XPath ne uspijeva.
Ključna karakteristika XPatha je da počinje s jednom kosom crtom (/), što znači da možete odabrati element iz korijenskog čvora.
Ispod je primjer apsolutnog Xpath izraza elementa prikazanog na donjem zaslonu.
NAPOMENA: Na ovome možete vježbati sljedeću XPath vježbu http://demo.guru99.com/test/selenium-xpath.html
Kliknite ovdje ako video 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]
Relativni Xpath
Relativni Xpath počinje od sredine HTML DOM strukture. Počinje dvostrukom kosom crtom (//). Može pretraživati elemente bilo gdje na web stranici, što znači da nema potrebe za pisanjem dugog xpatha i možete početi od sredine HTML DOM strukture. Relativni Xpath je uvijek poželjan jer nije potpuni put od korijenskog elementa.
Ispod je primjer relativnog XPath izraza istog elementa prikazanog na donjem zaslonu. Ovo je uobičajeni format koji se koristi za traženje elementa pomoću XPatha.
Kliknite ovdje ako video nije dostupan
Relative XPath: //div[@class='featured-box cloumnsize1']//h4[1]//b[1]
Što su XPath osi.
XPath osi pretražuju različite čvorove u XML dokumentu iz trenutnog kontekstnog čvora. XPath osi su metode koje se koriste za pronalaženje dinamičkih elemenata, što inače nije moguće normalnom XPath metodom koja nema ID, Classname, Name, itd.
Metode osi koriste se za pronalaženje onih elemenata koji se dinamički mijenjaju prilikom osvježavanja ili bilo koje druge operacije. Postoji nekoliko metoda sjekira koje se obično koriste u Selenium Webdriver kao dijete, roditelj, predak, brat, sestra, prethodnik, ja itd.
Kako upisati dinamički XPath Selenium webdriver
1) Osnovni XPath
XPath izraz odabire čvorove ili popis čvorova na temelju atributa poput ID, ime, naziv klase, itd. iz XML dokumenta kao što je prikazano u nastavku.
Xpath=//input[@name='uid']
Ovdje je poveznica za pristup stranici http://demo.guru99.com/test/selenium-xpath.html
Još neki osnovni xpath izrazi:
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) Sadrži ()
Contains() je metoda koja se koristi u XPath izrazu. Koristi se kada se vrijednost bilo kojeg atributa dinamički mijenja, na primjer, podaci za prijavu.
Značajka sadržavanja ima mogućnost pronalaženja elementa s djelomičnim tekstom kao što je prikazano u primjeru XPath ispod.
U ovom smo primjeru pokušali identificirati element koristeći samo djelomičnu tekstualnu vrijednost atributa. U donjem XPath izrazu djelomična vrijednost 'sub' koristi se umjesto gumba za slanje. Može se primijetiti da je element uspješno pronađen.
Potpuna vrijednost 'Type' je 'submit', ali koristi se samo djelomična vrijednost 'sub'.
Xpath=//*[contains(@type,'sub')]
Potpuna vrijednost 'name' je 'btnLogin', ali koristi se samo djelomična vrijednost 'btn'.
Xpath=//*[contains(@name,'btn')]
U gornjem izrazu, uzeli smo 'name' kao atribut i 'btn' kao djelomičnu vrijednost kao što je prikazano na slici ispod. Ovo će pronaći 2 elementa (LOGIN & RESET) jer njihov atribut 'name' počinje s 'btn'.
Slično, u donjem izrazu, uzeli smo 'id' kao atribut i 'poruku' kao djelomičnu vrijednost. Ovo će pronaći 2 elementa ('Korisnički ID ne smije biti prazan' & 'Zaporka ne smije biti prazan') jer njegov 'id' atribut počinje s 'poruka'.
Xpath=//*[contains(@id,'message')]
U donjem izrazu uzeli smo "tekst" veze kao atribut i "ovdje" kao djelomičnu vrijednost kao što je prikazano na slici ispod. Ovo će pronaći vezu ('ovdje') jer prikazuje tekst 'ovdje'.
Xpath=//*[contains(text(),'here')]
Xpath=//*[contains(@href,'guru99.com')]
3) Korištenje ILI & I
U izrazu ILI koriste se dva uvjeta, da li 1. uvjet ILI 2. 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 da bi se pronašao element.
U donjem XPath izrazu identificira elemente čiji su jedan ili oba uvjeta istiniti.
Xpath=//*[@type='submit' or @name='btnReset']
Isticanje oba elementa kao elementa “LOGIN” s atributom 'type' i elementa “RESET” s atributom 'name'.
U izrazu I koriste se dva uvjeta, oba uvjeta trebaju biti istinita da bi se pronašao element. Ne uspijeva pronaći element ako je bilo koji uvjet netočan.
Xpath=//input[@type='submit' and @name='btnLogin']
U donjem izrazu, naglašavajući element 'LOGIN' jer ima atribut 'type' i 'name'.
4) Xpath počinje sa
XPath počinje-sa() 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 početni tekst atributa uparuje 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 mijenja se).
Na primjer -: Pretpostavimo da se ID određenog elementa dinamički mijenja kao:
Id=” poruka12″
Id=” poruka345″
Id=” poruka8769″
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 počinje s "porukom" (tj. 'Korisnički ID ne smije biti prazan' & 'Lozinka ne smije biti prazan'). U donjem primjeru, XPath pronalazi one elemente čiji 'ID' počinje s 'message'.
Xpath=//label[starts-with(@id,'message')]
5) Funkcija XPath Text().
Korištenje električnih romobila ističe XPath funkcija text(). je ugrađena funkcija selenium webdrivera koja se koristi za lociranje elemenata na temelju teksta web elementa. Pomaže pronaći točne tekstualne elemente i locira elemente unutar skupa tekstualnih čvorova. Elementi koje treba locirati trebaju biti u obliku niza.
U ovom izrazu, s tekstualnom funkcijom, nalazimo element s točnim podudaranjem teksta kao što je prikazano u nastavku. U našem slučaju nalazimo element s tekstom "UserID".
Xpath=//td[text()='UserID']
XPath metode osi
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 koristit ćemo demo stranicu banke Guru99.
1) Praćenje
Odabire sve elemente u dokumentu trenutnog čvora ( ) [korisnički ID okvir za unos je trenutni čvor] kao što je prikazano na donjem zaslonu.
Xpath=//*[@type='text']//following::input
Postoje 3 "ulazna" čvora koja se podudaraju korištenjem "sljedeće" osi - lozinka, prijava i gumb za resetiranje. Ako se želite usredotočiti na bilo koji određeni element, možete koristiti donju XPath metodu:
Xpath=//*[@type='text']//following::input[1]
Možete promijeniti XPath prema zahtjevu stavljanjem [1],[2]…………i tako dalje.
S unosom kao '1', snimka zaslona u nastavku pronalazi određeni čvor koji je element okvira za unos 'Password'.
2) Predak
Os predaka odabire sve elemente predaka (djed i baka, roditelj itd.) trenutnog čvora kao što je prikazano na donjem zaslonu.
U donjem izrazu pronalazimo element predaka trenutnog čvora (čvor "TESTIRANJE PODUZEĆA").
Xpath=//*[text()='Enterprise Testing']//ancestor::div
Postoji 13 "div" čvorova koji se podudaraju pomoću osi "pretka". Ako se želite usredotočiti na bilo koji određeni element, možete upotrijebiti donji XPath, gdje mijenjate broj 1, 2 prema svojim zahtjevima:
Xpath=//*[text()='Enterprise Testing']//ancestor::div[1]
Možete promijeniti XPath prema zahtjevu stavljanjem [1], [2]…………i tako dalje.
3) Dijete
Odabire sve podređene elemente trenutnog čvora (Java) kao što je prikazano na donjem ekranu.
Xpath=//*[@id='java_technologies']//child::li
Postoji 71 "li" čvor koji se podudara pomoću osi "dijete". Ako se želite usredotočiti na bilo koji određeni element, možete upotrijebiti donji xpath:
Xpath=//*[@id='java_technologies']//child::li[1]
Možete promijeniti xpath prema zahtjevu stavljanjem [1],[2]…………i tako dalje.
4) Prethodno
Odaberite sve čvorove koji dolaze prije trenutnog čvora kao što je prikazano na donjem zaslonu.
U donjem izrazu identificira sve elemente unosa prije gumba "PRIJAVA". ID korisnika i lozinka ulazni element.
Xpath=//*[@type='submit']//preceding::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']//preceding::input[1]
Možete promijeniti xpath prema zahtjevu stavljanjem [1],[2]…………i tako dalje.
5) Praćenje-brat/sestra
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']//following-sibling::input
Usklađivanje jednog ulaznog čvora korištenjem osi "slijedećeg brata".
6) Roditelj
Odabire roditelja trenutnog čvora kao što je prikazano na donjem zaslonu.
Xpath=//*[@id='rt-feature']//parent::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']//parent::div[1]
Možete promijeniti XPath prema zahtjevu stavljanjem [1],[2]…………i tako dalje.
7) Sebe
Odabire trenutni čvor ili 'self' znači da označava sam čvor kao što je prikazano na donjem zaslonu.
Usklađivanje jednog čvora korištenjem osi "sopstva". Uvijek pronalazi samo jedan čvor jer predstavlja samoelement.
Xpath =//*[@type='password']//self::input
8) Potomak
Odabire potomke trenutnog čvora kao što je prikazano na donjem zaslonu.
U donjem izrazu identificira sve elemente koji su potomci trenutnog elementa (element okvira 'Main body surround') što znači dolje ispod čvora (čvor dijete, čvor unuka, itd.).
Xpath=//*[@id='rt-feature']//descendant::a
Postoji 12 čvorova "veze" koji se podudaraju pomoću osi "nasljednika". Ako se želite usredotočiti na bilo koji određeni element, možete koristiti donji XPath:
Xpath=//*[@id='rt-feature']//descendant::a[1]
Možete promijeniti XPath prema zahtjevu stavljanjem [1],[2]…………i tako dalje.
rezime
XPath je potreban za pronalaženje elementa na web stranici i izvršavanje operacije na tom određenom elementu.
- Postoje dvije vrste selenskog XPath-a:
- Apsolutni XPath
- Relativni XPath
- XPath osi su metode koje se koriste za pronalaženje dinamičkih elemenata, koje inače nije moguće pronaći uobičajenom XPath metodom
- XPath izraz odabire čvorove ili popis čvorova na temelju atributa kao što su ID, naziv, naziv klase itd. iz XML dokumenta.
Također provjerite: - Selenium Vodič za početnike: Naučite WebDriver u 7 dana