xpath functions dynamic xpath selenium
Ovaj vodič objašnjava upotrebu XPath funkcija u identificiranju elemenata s primjerima:
Prije automatizacije bilo kojeg web mjesta potrebno je pravilno identificirati objekt prije nego što možemo izvršiti bilo koju operaciju na istom. Kao što znamo da je element najlakše identificirati atributima poput ID-a, imena, veze, klase ili bilo kojeg drugog jedinstvenog atributa koji je dostupan s oznakom u kojoj element boravi.
To je moguće samo kada su ti atributi prisutni i / ili su jedinstveni tako da je objekt pravilno identificiran.
=> Ovdje pogledajte Vodič za početnike selena.
Što ćete naučiti:
Pregled XPath funkcija
Razgovarajmo o scenariju u kojem atributi nisu lako dostupni.
Izjava o problemu
Kako prepoznati element ako lokatori poput ID-a, imena, klase, veze itd. Nisu dostupni u oznaci elementa?
To se jasno može razumjeti na navedenom primjeru:
Prijavite se na Cvrkut
Kao što možete vidjeti na gornjoj snimci zaslona, zaglavlje 'Prijavi se na Twitter' nema atribute. Nakon toga ne možemo koristiti bilo koji od lokatora kao što su ID, klasa, veza ili ime za identificiranje ovog elementa.
dobro mjesto za besplatno gledanje animea na mreži
Dodatak Firepath alata Firefox generirao je donji XPath:
// * [@ id = ’page-container’] / div / div [1] / h1
Ne preporučujemo upotrebu gornjeg XPath-a kao strukture stranice ili ID-a jer se može dinamički mijenjati. Ako se ipak poslužimo ovim nestabilnim XPathom, možda ćemo morati češće mijenjati XPath, što oduzima više vremena za održavanje. Ovo je jedan slučaj u kojem ne možemo koristiti generički izraz XPath s lokatorima kao što su id, klasa, ime ili veza.
Riješenje
Prepoznavanje elementa pomoću teksta XPath putem teksta
Kako nam je dostupan vidljivi tekst 'Prijavi se na Twitter', iskoristili bismo sljedeće XPath funkcije za jedinstvenu identifikaciju elementa.
- sadrži () [Tekstom]
- započinje s () [Tekstom]
- tekst()
XPath funkcije poput sadrži (), započinje s () i text () kada se koriste uz pomoć teksta 'Prijavi se na Twitter' pomogle bi nam da ispravno identificiramo element, a na njemu se mogu obavljati i daljnje operacije.
# 1) Sadrži () metodu:
Sintaksa: Da biste pronašli web-element 'Prijava na Twitter', upotrijebite bilo koji od sljedećih izraza XPath koji uključuju metodu contains ().
Tekstom
- // h1 [sadrži (tekst (), 'Prijavi se na')]
- // h1 [sadrži (tekst (), 'u na Twitter')]
Napomena: 1 odgovarajući čvor označava da je web-element uspješno identificiran.
Iz gornjeg primjera jasno je da metodi contains () nije potreban apsolutni (puni) tekst da bi element ispravno identificirao. Djelomični tekst dovoljan je da ga ispravno prepoznate. Međutim, odabrani djelomični tekst trebao bi biti jedinstven. Korisnik može lako prepoznati element, čak i ako se orijentacija stranice promijeni uz pomoć metode contains ().
Imajte na umu da bi, čak i ako koristite apsolutni tekst 'Prijavi se na Twitter' metodom contains (), element bio ispravno identificiran.
# 2) Počinje metodom ():
Sintaksa: Da biste pronašli web-element 'Prijava na Twitter', upotrijebite sljedeće primjere XPath izraza koji imaju metodu start-with ().
Tekstom
- // h1 [započinje s (text (), 'Prijava')]
- // h1 [započinje s (text (), 'Prijavi se na')]
Iz gornjeg primjera jasno je da metoda XPath functions start-with () zahtijeva barem prvu riječ ('Zapisnik') vidljivog teksta za jedinstvenu identifikaciju elementa. Također radi na djelomičnom tekstu i neće uspjeti ako ne uvrstimo prvu riječ djelomično vidljivog teksta.
Imajte na umu da će, čak i ako koristite apsolutni tekst 'Prijavi se na Twitter' s metodom start-with (), element biti ispravno prepoznat.
Nevaljani XPath za pokretanje s (): // h1 [započinje s (tekst (), 'u Twitter')]
Bilješka: Nijedan odgovarajući čvor ne znači da web-element nije identificiran.
# 3) Tekst () metoda:
Sintaksa: Da biste pronašli web-element 'Prijava na Twitter', upotrijebite sljedeći izraz XPath koji ima metodu text ().
U ovom izrazu koristimo apsolutni tekst koji je prisutan između početne oznake. Ako koristimo funkciju text () s djelomičnim Xpatom kao što to radimo u contains () i start-with (), ne bismo mogli pronaći element.
Nevažeći Xpath za tekst ():
Prepoznavanje elementa pomoću funkcija XPath po atributima
Funkcije XPath koristimo (sadrži ili započinje s) s atributom kada su u oznaci spremnika dostupne neke jedinstveno identificirane vrijednosti atributa. Atributima se pristupa pomoću simbola '@'.
To se može razumjeti s danim primjer:
Prijavite se na Google
# 1) Sadrži () metodu:
Sintaksa: Da biste jedinstveno identificirali element gumba 'Osjećam se sretno' uz pomoć funkcije XPath sadrži () uz pomoć atributa.
(i) Prema atributu vrijednosti:
- // ulaz [sadrži (@ vrijednost, 'Osjećaj')]
- // ulaz [sadrži (@ vrijednost, 'Sretan')]
Iz gornjih slika podrazumijeva se da će upotreba vrijednosti atributa s metodom 'Osjećaj' ili 'Sreća' s sadrži () jedinstveno identificirati element. Međutim, važno je napomenuti da će čak i ako upotrijebimo cjeloviti sadržaj atributa Value, element ispravno prepoznati.
(ii) Po atributu Ime:
//input[contains(@name=’btnI’)]
Nevažeći slučaj za XPath funkciju s atributom:
Moramo biti vrlo oprezni pri odabiru atributa koji će se koristiti s metodom sadrži () i započinje s (). Ako vrijednost atributa nije jedinstvena, nećemo moći jedinstveno identificirati element.
Pretpostavimo, ako uzmemo atribut 'type' prilikom prepoznavanja gumba 'Osjećam se sretno', XPath neće raditi.
2 odgovarajuća čvora ukazuju na to da element nije točno identificiran. Ovdje vrijednost atributa tipa nije jedinstvena.
# 2) Počinje metodom ():
Metoda start-with () s atributom vrlo je korisna kada moramo pronaći elemente čiji prvi dio atributa ostaje fiksan, dok se kasniji dio neprestano mijenja. Ovaj je pristup vrlo koristan kada objekti dinamički mijenjaju vrijednost svojih atributa. To se također može koristiti ako želimo uhvatiti slične vrste elemenata.
Ići Facebook prijava
Pregledajte prvi tekstni okvir „Ime“ i drugi tekstni okvir „Prezime“ obrasca za prijavu.
Identificiran je prvi okvir za tekst 'Ime'.
Identificiran je drugi okvir za tekst 'Prezime'.
U oba tekstualna okvira koja su identificirana za prijavu za Facebook, početni dio atributa id ostaje nepromijenjen.
Ime id = “u_0_2”
Prezime id = ’u_0_4”
Ovo je scenarij u kojem možemo koristiti atribut start-with () da bismo dobili sve elemente pod takvom vrstom atributa id. Imajte na umu da uzimamo ova dva polja samo kao referencu. Međutim, na zaslonu može biti više polja s id-ovima koja počinju s 'u_0_'.
Počinje s () [Po atributu id]
//input[starts-with(@id,”u_0_”)]
Važna nota: Ovdje smo koristili dvostruke navodnike umjesto pojedinačnih navodnika. Ali pojedinačni citati također će raditi s metodom start-with.
11 podudarnih čvorova ukazuje na to da je ovaj XPath identificirao sve elemente koji id-ovi počinju s “u_0_”. Potonji dio id-a (2 za ime, 4 za prezime itd.) Određuje kako ćemo jedinstveno identificirati element.
Možemo koristiti atribut funkcije start-with tamo gdje moramo prikupiti sličnu vrstu elemenata na popisu i dinamički odabrati jedan od njih zaobilazeći argument u generičkoj metodi kako bismo jedinstveno identificirali element.
Slijedite donji primjer kako biste funkciju start-with koristili u našu korist.
Uzorak koda:
/* Generic Method */ public void xpathLoc(String identifier){ //The below step identifies the element “First Name” uniquely when the argument is “2” WebElement E1=d1.findElement(By.xpath('//input[starts-with(@id,”u_0_”+identifier )]')); E1.sendKeys(“Test1”); /* This step enters the value of First Name as “Test 1” */ } /* Main Method */ public static void main(String[] args) { xpathLoc(“2”); --- This step calls the xpathLoc() method to identify the first name. }
Bilješka: Eclipse možda neće dopustiti upotrebu dvostrukih navodnika. Možda ćete morati pribjeći drugom kodu da biste napravili dinamički XPath.
Uzorak koda dan je za referencu. Možete ga poboljšati tako da stane u sve elemente i operacije koje želite izvršiti te vrijednosti koje želite unijeti (u slučaju tekstualnih polja) kako bi kod bio svestraniji.
Zaključak
Ovaj je članak objasnio kako se XPath funkcije mogu koristiti (), započinju s () i text () s atributom i tekstom za jedinstvenu identifikaciju elemenata u HTML DOM strukturi.
Ispod su neka zapažanja koja možemo izvući za XPath funkcije:
- Iskoristite metodu “contains ()” u XPathu ako znate djelomično konstantni vidljivi tekst ili atribut.
- Iskoristite metodu 'započinje s ()' u XPathu ako znate početni djelomični konstantni vidljivi tekst ili atribut.
- Također možete koristiti metodu contains () i start-with () s apsolutnim tekstom ili atributom.
- Iskoristite metodu 'text ()' u XPathu ako ste svjesni apsolutno vidljivog teksta.
- Ne možete koristiti metodu text () s djelomičnim tekstom.
- Ne možete se koristiti metodom start-with () ako se početni tekst ne koristi u XPathu ili ako se početni tekst neprestano mijenja.
U sljedećem uputstvu naučit ćemo kako koristiti XPath sjekire s XPath funkcijama za daljnje poboljšanje položaja elemenata na dostupnoj web stranici.
=> Pročitajte seriju Easy Training za selen.
Preporučena literatura
- Lokatori selena: prepoznavanje web elemenata pomoću XPath-a u selenu (primjeri)
- Rukovanje web tablicama, okvirima i dinamičkim elementima u skriptu Selenium - Vodič za selen # 18
- Python string funkcije
- Postprocesor ekstraktora Xpath u JMeteru
- Selen Pronađi element pomoću udžbenika teksta s primjerima
- Vodič za krastavac selenij: Integracija Java Selenium WebDriver krastavaca
- Sveobuhvatan vodič za XPath - jezik XML puta
- Uvod u Selenium WebDriver - Vodič za selen br. 8