„XPath“ programoje „Selenium WebDriver“: kaip rasti „XPath“?

Turinys:

Anonim

„Selenium“ automatikoje, jei elementų neranda bendrieji lokatoriai, pvz., ID, klasė, vardas ir kt., Tada XPath naudojamas norint rasti elementą tinklalapyje.

Šioje pamokoje sužinosime apie „xpath“ ir skirtingą „XPath“ išraišką, kad rastume sudėtingus ar dinaminius elementus, kurių atributai dinamiškai keičiasi atnaujinant ar atliekant bet kokias operacijas.

Šioje „XPath“ pamokoje sužinosite

  • Kas yra „XPath“?
  • X kelio tipai
    • Absoliutus XPathas
    • Santykinis „XPath“
  • Pagrindinis „XPath“
  • Yra ()
  • Naudojant ARBA IR IR
  • Pradedama nuo funkcijos
  • Tekstas ()
  • XPath ašių metodai
    • Stebimas
    • Protėvis
    • Vaikas
    • Prieš tai
    • Sekantis brolis
    • Tėvas
    • Savarankiškai
    • Palikuonis

Kas yra „XPath“ selene?

„XPath in Selenium“ yra XML kelias, naudojamas naršyti per puslapio HTML struktūrą. Tai yra sintaksė arba kalba, skirta rasti bet kurį tinklalapio elementą naudojant XML kelio išraišką. XPath gali būti naudojamas tiek HTML, tiek XML dokumentams rasti bet kurio tinklalapio elemento vietą naudojant HTML DOM struktūrą.

Pagrindinis „XPath“ formatas selene paaiškinamas ekrano kopija.

Pagrindinis „XPath“ formatas

XPath seleno sintaksė:

XPath yra tinklalapyje esančio elemento kelias. Standartinė XPath sintaksė kuriant XPath yra.

Xpath = // žymos pavadinimas [@ attribute = 'value']
  • //: Pasirinkite dabartinį mazgą.
  • Žymos pavadinimas: konkretaus mazgo žymos pavadinimas.
  • @: Pasirinkite atributą.
  • Atributas: mazgo atributo pavadinimas.
  • Vertė: atributo vertė.

Norėdami tiksliai rasti elementą tinklalapiuose, yra įvairių tipų lokatorių:

„XPath Locators“ Tinklalapyje raskite skirtingų elementų
ID Norėdami rasti elementą pagal elemento ID
Klasės pavadinimas Norėdami rasti elementą pagal elemento „Classname“
vardas Norėdami rasti elementą pagal elemento pavadinimą
Nuorodos tekstas Norėdami rasti elementą pagal nuorodos tekstą
XPath XPath reikalingas norint rasti dinaminį elementą ir pereiti tarp įvairių tinklalapio elementų
CSS kelias CSS kelias taip pat nustato elementus, neturinčius vardo, klasės ar ID.

X kelio tipai

Yra du XPath tipai:

1) Absoliutus XPathas

2) Santykinis XPathas

Absoliutus XPath:

Tai yra tiesioginis būdas rasti elementą, tačiau absoliutaus XPath trūkumas yra tas, kad jei elemento kelyje yra kokių nors pakeitimų, XPath nepavyksta.

Pagrindinė „XPath“ ypatybė yra ta, kad ji prasideda vienu pasviruoju brūkšniu (/), o tai reiškia, kad elementą galite pasirinkti iš šaknies mazgo.

Žemiau pateikiamas absoliučios xpath išraiškos pavyzdys, parodytas žemiau esančiame ekrane.

PASTABA: Galite atlikti šį „XPath“ pratimą šiame http://demo.guru99.com/test/selenium-xpath.html

Spustelėkite čia, jei vaizdo įrašas nepasiekiamas

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

Absoliutus XPathas

Santykinis „Xpath“:

Santykinis „Xpath“ prasideda nuo HTML DOM struktūros vidurio. Jis prasideda dvigubu pasviruoju brūkšniu (//). Jis gali ieškoti elementų bet kurioje tinklalapio vietoje, vadinasi, nereikia rašyti ilgo „xpath“ ir galite pradėti nuo HTML DOM struktūros vidurio. Visada pirmenybė teikiama santykiniam „Xpath“, nes tai nėra visas kelias iš šakninio elemento.

Žemiau pateikiamas to paties elemento santykinės XPath išraiškos pavyzdys, parodytas žemiau esančiame ekrane. Tai yra įprastas formatas, naudojamas norint rasti elementą pagal XPath.

Spustelėkite čia, jei vaizdo įrašas nepasiekiamas

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

Santykinis „XPath“

Kas yra „XPath“ ašys.

„XPath“ ašys ieško skirtingų mazgų XML dokumente nuo dabartinio konteksto mazgo. „XPath Axes“ yra metodai, naudojami norint rasti dinaminius elementus, kurie kitu atveju neįmanomi įprastu „XPath“ metodu, neturinčiu ID, klasės pavadinimo, pavadinimo ir kt.

Ašių metodai naudojami norint rasti tuos elementus, kurie dinamiškai keičiasi atnaujinant ar atliekant kitas operacijas. Yra keletas ašių metodų, paprastai naudojamų „Selenium Webdriver“, pvz., Vaikas, tėvas, protėvis, brolis, sesuo, ankstesnis, savęs ir kt.

Naudojant „XPath“ sudėtingus ir dinaminius elementus selene

1) Pagrindinis „XPath“:

„XPath“ išraiška pasirinkite mazgus ar mazgų sąrašą, remdamiesi tokiais atributais kaip ID, vardas, klasės pavadinimas ir kt. Iš XML dokumento, kaip parodyta žemiau.

Xpath = // įvestis [@ name = 'uid']

Čia yra nuoroda, skirta patekti į puslapį http://demo.guru99.com/test/selenium-xpath.html

Pagrindinis „XPath“

Dar keletas pagrindinių „xpath“ posakių:

Xpath = // įvestis [@ type = 'text']Xpath = // etiketė [@ id = 'message23']Xpath = // įvestis [@ value = 'RESET']Xpath = // * [@ class = 'baronas']Xpath = // a [@ href = 'http: //demo.guru99.com/']Xpath = //img[@src='//cdn.guru99.com/images/home/java.png.webp ']

2) yra ():

„Contains“) yra metodas, naudojamas XPath išraiškoje. Jis naudojamas, kai dinamiškai keičiasi bet kurio atributo vertė, pavyzdžiui, prisijungimo informacija.

Funkcija „Yra“ turi galimybę rasti elementą su daliniu tekstu, kaip parodyta žemiau esančiame „XPath“ pavyzdyje.

Šiame pavyzdyje mes bandėme nustatyti elementą, naudodami tik dalinę atributo teksto vertę. Žemiau pateiktoje XPath išraiškoje vietoj pateikimo mygtuko naudojama dalinė vertė „sub“. Galima pastebėti, kad elementas randamas sėkmingai.

Pilna „Tipo“ vertė yra „Pateikti“, tačiau naudojama tik dalinė reikšmė „Sub“.

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

Pilna „vardo“ reikšmė yra „btnLogin“, tačiau naudojama tik dalinė reikšmė „btn“.

Xpath = // * [yra (@ vardas, 'btn')]

Pirmiau pateiktoje išraiškoje „vardą“ laikėme atributu, o „btn“ - kaip dalinę vertę, kaip parodyta toliau pateiktoje ekrano kopijoje. Tai suras 2 elementus (LOGIN & RESET), nes jų „name“ atributas prasideda „btn“.

Panašiai žemiau pateiktoje išraiškoje mes laikėme „id“ kaip atributą, o „message“ - kaip dalinę vertę. Tai suras 2 elementus („User-ID neturi būti tuščias“ ir „Slaptažodis neturi būti tuščias“), nes jo „name“ atributas prasideda „message“.

Xpath = // * [yra (@ id, 'žinutė')] 

Žemiau pateiktoje išraiškoje nuorodos „tekstą“ pasirinkome kaip atributą, o „čia“ - kaip dalinę vertę, kaip parodyta toliau pateiktoje ekrano kopijoje. Tai ras nuorodą („čia“), nes joje rodomas tekstas „čia“.

Xpath = // * [yra (tekstas (), „čia“)]Xpath = // * [yra (@ href, 'guru99.com')] 

3) Naudojant OR ir AND:

OR išraiškoje naudojamos dvi sąlygos, ar 1 sąlyga ARBA 2 sąlyga turėtų būti teisinga. Jis taip pat taikomas, jei yra viena iš sąlygų, o gal abi. Reiškia, kad norint rasti elementą turi būti viena sąlyga.

Žemiau pateiktoje „XPath“ išraiškoje jis nurodo elementus, kurių vienos arba abi sąlygos yra teisingos.

Xpath = // * [@ type = 'pateikti' arba @ name = 'btnReset']

Abu elementai paryškinami kaip elementas „LOGIN“, turintis atributą „type“, ir elementas „RESET“, turintis atributą „name“.

IR išraiškoje naudojamos dvi sąlygos, kad surastų elementą, abi sąlygos turėtų būti teisingos. Nepavyksta rasti elemento, jei kuri nors sąlyga yra klaidinga.

Xpath = // įvestis [@ type = 'pateikti' ir @ name = 'btnLogin']

Žemiau esančioje išraiškoje paryškinkite elementą „LOGIN“, nes jis turi ir atributą „type“, ir „name“.

4) „Xpath“ prasideda

XPath starts-with () yra funkcija, naudojama rasti žiniatinklio elementą, kurio atributo vertė pasikeičia atnaujinant arba atliekant kitas dinamines operacijas tinklalapyje. Taikant šį metodą, atributo pradinis tekstas suderinamas, kad būtų galima rasti elementą, kurio atributo vertė dinamiškai keičiasi. Taip pat galite rasti elementų, kurių atributo vertė yra statinė (o ne keičiasi).

Pvz.: Tarkime, kad tam tikro elemento ID dinamiškai keičiasi taip:

Id = "message12"

Id = "message345"

Id = "message8769"

ir taip toliau ... bet pradinis tekstas yra tas pats. Šiuo atveju naudojame išraišką „Pradėti su“.

Žemiau pateiktoje išraiškoje yra du elementai, kurių ID prasideda „pranešimas“ (ty „User ID neturi būti tuščias“ ir „Slaptažodis neturi būti tuščias“). Žemiau pateiktame pavyzdyje „XPath“ randa tuos elementus, kurių „ID“ prasideda „message“.

Xpath = // etiketė [prasideda nuo (@ id, 'žinutė')]

5) „XPath Text“ () funkcija

XPath text ()“ funkcija yra integruota seleno žiniatinklio tvarkyklės funkcija, naudojama elementams rasti pagal žiniatinklio elemento tekstą. Tai padeda rasti tikslius teksto elementus ir suranda elementus teksto mazgų rinkinyje. Elementai, kurie turi būti išdėstyti, turėtų būti eilutės formos.

Šioje išraiškoje su teksto funkcija randame elementą su tikslia teksto atitiktimi, kaip parodyta žemiau. Mūsų atveju randame elementą su tekstu „UserID“.

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

6) XPath ašių metodai:

Šie XPath ašių metodai naudojami norint rasti sudėtingus ar dinamiškus elementus. Žemiau pamatysime keletą šių metodų.

Norėdami iliustruoti šiuos „XPath“ ašių metodus, naudosime „Guru99“ banko demonstracinę svetainę.

a) Po to:

Parenka visus elementus dabartinio mazgo dokumente () [UserID įvedimo laukelis yra dabartinis mazgas], kaip parodyta žemiau esančiame ekrane.

Xpath = // * [@ type = 'text'] // seka :: įvestį

Yra 3 „įvesties“ mazgai, atitinkantys „sekimo“ ašies slaptažodį, prisijungimo ir atstatymo mygtuką. Jei norite sutelkti dėmesį į bet kurį konkretų elementą, galite naudoti žemiau pateiktą XPath metodą:

Xpath = // * [@ type = 'text'] // seka :: įvestis [1]

XPath galite pakeisti pagal reikalavimą įdėdami [1], [2]

… ir taip toliau.

Kai įvestis yra „1“, toliau pateiktoje ekrano kopijoje randamas konkretus mazgas, kuris yra „Slaptažodis“ įvesties langelio elementas.

b) protėvis:

Protėvio ašis parenka visus dabartinio mazgo protėvių elementus (senelius, tėvus ir kt.), Kaip parodyta žemiau esančiame ekrane.

Žemiau pateiktoje išraiškoje randame dabartinio mazgo protėvių elementą (mazgas „ĮMONĖS TESTAVIMAS“).

Xpath = // * [text () = 'Enterprise Testing'] // protėvis :: div

Yra 13 „div“ mazgų, atitinkančių „protėvio“ ašį. Jei norite sutelkti dėmesį į bet kurį konkretų elementą, galite naudoti žemiau pateiktą XPath, kur pakeisite skaičių 1, 2 pagal savo reikalavimą:

Xpath = // * [text () = 'Enterprise Testing'] // protėvis :: div [1]

XPath galite pakeisti pagal reikalavimą įdėdami [1], [2]

… ir taip toliau.

c) vaikas:

Parenka visus dabartinio mazgo („Java“) vaikų elementus, kaip parodyta žemiau esančiame ekrane.

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

Yra 71 „li“ mazgas, atitinkantis ašį „vaikas“. Jei norite sutelkti dėmesį į bet kurį konkretų elementą, galite naudoti šį „xpath“:

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

Galite pakeisti „xpath“ pagal reikalavimą įdėdami [1], [2]

… ir taip toliau.

d) Prieš tai:

Pasirinkite visus mazgus, esančius prieš dabartinį mazgą, kaip parodyta žemiau esančiame ekrane.

Žemiau pateiktoje išraiškoje jis identifikuoja visus įvesties elementus, esančius prieš mygtuką „LOGIN“, kuris yra „ Userid“ ir slaptažodžio įvesties elementas.

Xpath = // * [@ type = 'pateikti'] // prieš :: įvestis

Yra 2 „įvesties“ mazgai, atitinkantys „ankstesnę“ ašį. Jei norite sutelkti dėmesį į bet kurį konkretų elementą, galite naudoti žemiau pateiktą XPath:

Xpath = // * [@ type = 'pateikti'] // prieš :: įvestis [1]

Galite pakeisti „xpath“ pagal reikalavimą įdėdami [1], [2]

… ir taip toliau.

e) sekantis brolis:

Pasirinkite šiuos konteksto mazgo brolius ir seseris. Broliai ir seserys yra tame pačiame dabartinio mazgo lygyje, kaip parodyta žemiau esančiame ekrane. Jis ras elementą po dabartinio mazgo.

 xpath = // * [@ type = 'pateikti'] // sekantis brolis :: įvestis

Vienas įvesties mazgas sutampa naudojant ašį „sekantis brolis“.

f) Tėvas:

Parenka dabartinio mazgo tėvą, kaip parodyta žemiau esančiame ekrane.

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

Yra 65 „div“ mazgai, atitinkantys „pirminę“ ašį. Jei norite sutelkti dėmesį į bet kurį konkretų elementą, galite naudoti žemiau pateiktą XPath:

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

XPath galite pakeisti pagal reikalavimą įdėdami [1], [2]

… ir taip toliau.

g) Aš:

Pasirenka dabartinį mazgą arba „savarankiškai“ reiškia, kad jis nurodo patį mazgą, kaip parodyta žemiau esančiame ekrane.

Vienas mazgas derinamas naudojant „aš“ ašį. Jis visada randa tik vieną mazgą, nes jis reprezentuoja savęs elementą.

Xpath = // * [@ type = 'password'] // savęs :: įvestis

h) palikuonis:

Parenka dabartinio mazgo palikuonis, kaip parodyta žemiau esančiame ekrane.

Žemiau pateiktoje išraiškoje jis identifikuoja visus dabartinio elemento palikuonis (rėmo elementas „Pagrindinis korpusas supa“), kuris reiškia žemyn po mazgu (vaiko mazgas, anūko mazgas ir kt.).

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

Yra 12 „nuorodos“ mazgų, atitinkančių „palikuonių“ ašį. Jei norite sutelkti dėmesį į bet kurį konkretų elementą, galite naudoti žemiau pateiktą XPath:

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

XPath galite pakeisti pagal reikalavimą įdėdami [1], [2]

… ir taip toliau.

Santrauka:

„XPath“ reikalingas norint rasti elementą tinklalapyje, kad būtų galima atlikti operaciją su tuo konkrečiu elementu.

  • Yra du seleno XPath tipai:
    • Absoliutus XPathas
    • Santykinis „XPath“
  • „XPath Axes“ yra dinaminių elementų paieškos metodai, kurių kitu atveju neįmanoma rasti įprastu „XPath“ metodu
  • „XPath“ išraiška pasirinkite mazgus ar mazgų sąrašą pagal XML dokumento atributus, tokius kaip ID, vardas, klasės pavadinimas ir kt.