xpath functions dynamic xpath selenium
Ta vadnica pojasnjuje uporabo funkcij XPath pri prepoznavanju elementov s primeri:
Preden avtomatiziramo katero koli spletno stran, moramo pravilno prepoznati predmet, preden lahko na njem izvedemo katero koli operacijo. Kot vemo, da je element najlažje identificirati z atributi, kot so ID, Ime, Povezava, Razred ali kateri koli drug unikatni atribut, ki je na voljo z oznako, kjer je element.
To je mogoče le, če so ti atributi prisotni in / ali so edinstveni, tako da je objekt pravilno identificiran.
=> Tukaj si oglejte Vodnik za začetnike selena.
Kaj se boste naučili:
Pregled funkcij XPath
Pogovorimo se o scenariju, ko atributi niso na voljo.
Izjava o težavi
Kako prepoznamo element, če lokatorji, kot so ID, Ime, Razred, Povezava itd., Niso na voljo v oznaki elementa?
To lahko jasno razumemo z navedenim primerom:
Prijavite se v Twitter
Kot lahko vidite na zgornjem posnetku zaslona, v glavi »Prijavi se v Twitter« ni atributov. Potem pa za identifikacijo tega elementa ne moremo uporabiti nobenega lokatorja, kot je ID, razred, povezava ali ime.
vprašanja za spletne storitve v javi
Vtičnik Firepath orodja Firefox je ustvaril spodnji XPath:
// * (@ id = ’page-container’) / div / div (1) / h1
Ne priporočamo uporabe zgornjega XPath kot strukture strani ali ID-ja, saj se lahko dinamično spreminja. Če uporabimo ta nestabilni XPath, bomo morda morali XPath pogosteje spreminjati, kar je dolgotrajnejše za vzdrževanje. To je primer, ko generičnega izraza XPath ne moremo uporabiti z lokatorji, kot so id, razred, ime ali povezava.
Rešitev
Prepoznavanje elementa s pomočjo funkcij XPath po besedilu
Ker imamo pri sebi na voljo vidno besedilo »Prijava v Twitter«, bi uporabili naslednje XPath funkcije za enolično identifikacijo elementa.
- vsebuje () (po besedilu)
- začne se z () (po besedilu)
- besedilo ()
Funkcije XPath, kot je contains (), start-with () in text (), če jih uporabljamo s pomočjo besedila »Prijavi se v Twitter«, bi nam pomagale pravilno prepoznati element, na njem pa lahko izvajamo nadaljnje operacije.
# 1) Vsebuje () Metoda:
Sintaksa: Če želite poiskati spletni element »Prijava v Twitter«, uporabite katerega koli od naslednjih izrazov XPath, ki vključuje metodo contains ().
Po besedilu
- // h1 (vsebuje (besedilo (), 'Prijava v'))
- // h1 (vsebuje (besedilo (), 'v na Twitter'))
Opomba: 1 ujemajoče se vozlišče pomeni, da je bil spletni element uspešno identificiran.
Iz zgornjega primera je razvidno, da metoda contains () ne potrebuje absolutnega (celotnega) besedila za pravilno identifikacijo elementa. Delno besedilo je dovolj, da ga pravilno prepoznamo. Izbrano delno besedilo pa mora biti unikatno. Uporabnik lahko element zlahka prepozna, tudi če je usmerjenost strani spremenjena s pomočjo metode contains ().
Upoštevajte, da bi bil element pravilno identificiran tudi, če uporabljate absolutno besedilo »Prijava v Twitter« z metodo contains ().
# 2) Metoda se začne z ():
Sintaksa: Če želite poiskati spletni element »Prijava v Twitter«, uporabite naslednji vzorec izrazov XPath, ki se začnejo z ().
Po besedilu
- // h1 (začne se z (besedilo (), 'Prijava'))
- // h1 (začne se z (besedilo (), 'Prijava v'))
Iz zgornjega primera je razvidno, da metoda XPath functions start-with () zahteva vsaj prvo besedo (»Log«) vidnega besedila za enolično identifikacijo elementa. Deluje tudi na delno besedilo in ne bo uspelo, če ne bomo vključili prve besede delno vidnega besedila.
Tudi če uporabljate absolutno besedilo »Prijava v Twitter« z metodo start-with (), bo element pravilno prepoznan.
Neveljaven XPath za začetek z (): // h1 (začne se z (besedilo (), 'v Twitter'))
Opomba: Nobeno ujemajoče se vozlišče ne pomeni, da spletni element ni bil identificiran.
# 3) metoda Text ():
Sintaksa: Če želite poiskati spletni element »Prijava v Twitter«, uporabite naslednji izraz XPath, ki ima metodo text ().
V tem izrazu uporabljamo absolutno besedilo, ki je med začetno oznako. Če uporabimo funkcijo text () z delnim Xpathom, kot to počnemo v contains () in start-with (), elementa ne bi mogli najti.
Neveljavna pot Xpath za besedilo ():
Prepoznavanje elementa s pomočjo funkcij XPath po atributih
Funkcije XPath (vsebuje ali začne s) uporabljamo z atributom, kadar je v oznaki vsebnika na voljo enolično identificirane vrednosti atributov. Do atributov lahko dostopate s simbolom “@”.
To je mogoče jasno razumeti z dano primer:
Prijavite se v Google
# 1) Vsebuje () Metoda:
Sintaksa: Če želite enolično identificirati element gumba »I'm Feeling Lucky« s pomočjo funkcije XPath vsebuje () s pomočjo atributa.
(i) Po atributu vrednosti:
- // vnos (vsebuje (@ vrednost, 'Občutek'))
- // vnos (vsebuje (@ vrednost, 'Srečen'))
Iz zgornjih slik je razvidno, da bo uporaba vrednosti atributa z metodo 'Feeling' ali 'Lucky' with contains () enolično identificirala element. Pomembno pa je omeniti, da tudi če uporabimo celotno vsebino atributa Value, bo element pravilno identificiral.
(ii) Atribut po imenu:
//input(contains(@name=’btnI’))
Neveljavna črka za funkcijo XPath z atributom:
Zelo previdni moramo biti pri izbiri atributa, ki ga bomo uporabili z metodama contains () in start-with (). Če vrednost atributa ni enolična, elementa ne bomo mogli enolično identificirati.
Predpostavimo, da če vzamemo atribut »type«, ko identificiramo gumb »Sreča imam«, XPath ne bo deloval.
2 ujemajoči se vozlišči označujeta, da element ni bil pravilno identificiran. Vrednost atributa tipa tukaj ni enolična.
# 2) Metoda se začne z ():
Metoda start-with () z atributom je zelo koristna, ko moramo najti elemente, katerih nekdanji del atributa ostane nespremenjen, poznejši del pa se še naprej spreminja. Ta pristop je zelo uporaben, kadar predmeti dinamično spreminjajo vrednost svojih atributov. To lahko uporabimo tudi, če želimo zajeti podobne vrste elementov.
Pojdi do Facebook Prijava
Preglejte prvo besedilno polje »Ime« in drugo besedilno polje »Priimek« obrazca za prijavo.
Označeno je prvo besedilno polje »Ime«.
Identificirano je drugo besedilno polje »Priimek«.
V obeh besedilnih poljih, ki sta opredeljeni za prijavo za Facebook, ostane začetni del atributov id nespremenjen.
Ime id = “u_0_2”
Priimek id = ’u_0_4”
To je scenarij, v katerem lahko z atributom start-with () dobimo vse elemente pod takšno vrsto atributa id. Upoštevajte, da ta dva polja uporabljamo le kot referenco. Na zaslonu pa bi lahko bilo več polj z id-ji, ki se začnejo z 'u_0_'.
Začne se s () (Po atributu id)
//input(starts-with(@id,”u_0_”))
Pomembno: Tu smo uporabili dvojne narekovaje namesto enojnih narekovajev. Toda enojne narekovaje bodo delovale tudi z metodo start-with.
11 ujemajočih se vozlišč pomeni, da je ta XPath identificiral vse elemente, ki se začnejo z i-u_0_. Slednji del id (2 za ime, 4 za priimek itd.) Določa, kako bomo enolično identificirali element.
Atribut funkcije start-with lahko uporabimo tam, kjer moramo zbrati podoben tip elementov na seznamu in dinamično izbrati enega od njih, tako da zaobidemo argument v generični metodi, da unikatno identificiramo element.
Prosimo, sledite spodnjemu primeru, da v našo korist izkoristite funkcijo zagon.
Vzorčna 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. }
Opomba: Eclipse morda ne dovoljuje uporabe dvojnih narekovajev. Za izdelavo dinamičnega XPath boste morda morali uporabiti drugo kodo.
Vzorčna koda je navedena kot referenca. Lahko ga izboljšate tako, da se prilega vsem elementom in operacijam, ki jih želite izvesti, ter vrednostim, ki jih želite vnesti (v primeru besedilnih polj), da bo koda bolj vsestranska.
Zaključek
V tem članku je razloženo, kako lahko uporabimo funkcije XPath, ki vsebujejo (), začne-se () in besedilo () z atributom in besedilom za enolično identifikacijo elementov v strukturi HTML DOM.
Spodaj je nekaj opažanj, ki jih lahko dobimo za funkcije XPath:
- Če poznate delno konstantno vidno besedilo ali atribut, uporabite metodo “contains ()” v XPathu.
- Če poznate začetno delno konstantno vidno besedilo ali atribut, uporabite metodo »start-with ()« v XPathu.
- Uporabite lahko tudi metoda contains () in start-with () z absolutnim besedilom ali atributom.
- Če se zavedate absolutno vidnega besedila, uporabite metodo 'text ()' v XPathu.
- Z delnim besedilom ne morete uporabiti metode text ().
- Ne morete uporabiti metode start-with (), če se začetno besedilo ne uporablja v XPathu ali če se začetno besedilo nenehno spreminja.
V naslednji vadnici se bomo naučili, kako uporabiti osi XPath s funkcijami XPath za nadaljnje izboljšanje lokacije elementov na razpoložljivi spletni strani.
=> Preberite serijo Easy Selenium Training Series.
Priporočeno branje
- Lokatorji selena: prepoznavanje spletnih elementov s pomočjo XPath v selenu (primeri)
- Ravnanje s spletnimi mizami, okvirji in dinamičnimi elementi v skriptu Selenium - Vadnica za selen št. 18
- Funkcije niza Python
- Postprocesor ekstraktorja Xpath v JMetru
- Vadnica za iskanje selena z besedilom z primeri
- Vadnica za kumare selena: Integracija kumar Java Selenium WebDriver
- Celovita vadnica XPath - jezik poti XML
- Uvod v Selenium WebDriver - Vadnica za selenij št. 8