Če pri avtomatizaciji selena splošni lokatorji ne najdejo elementov, kot so id, razred, ime itd., Se XPath uporablja za iskanje elementa na spletni strani.
V tej vadnici bomo spoznali xpath in različne izraze XPath za iskanje kompleksnih ali dinamičnih elementov, katerih atributi se dinamično spreminjajo ob osvežitvi ali kakršnih koli operacijah.
V tej vadnici XPath boste izvedeli-
- Kaj je XPath?
- Vrste X-poti
- Absolutni XPath
- Relativni XPath
- Osnovni XPath
- Vsebuje ()
- Uporaba ALI IN
- Začne se s funkcijo
- Besedilo ()
- Metode osi XPath
- Sledi
- Prednik
- Otrok
- Predhodno
- Pobratimski brat
- Starš
- Jaz
- Potomak
Kaj je XPath v selenu?
XPath v seleniju je pot XML, ki se uporablja za krmarjenje po strukturi HTML strani. Je sintaksa ali jezik za iskanje katerega koli elementa na spletni strani z uporabo izraza poti XML. XPath je mogoče uporabiti za dokumente HTML in XML za iskanje lokacije katerega koli elementa na spletni strani s pomočjo strukture HTML DOM.
Osnovna oblika XPath v selenu je razložena spodaj s posnetkom zaslona.
Osnovna oblika XPath
Sintaksa za XPath selen:
XPath vsebuje pot elementa, ki se nahaja na spletni strani. Standardna sintaksa XPath za ustvarjanje XPath je.
Xpath = // ime oznake [@ atribut = 'vrednost']
- //: Izberite trenutno vozlišče.
- Oznaka: Oznaka določenega vozlišča.
- @: Izberite atribut.
- Atribut: Ime atributa vozlišča.
- Vrednost: vrednost atributa.
Za natančno iskanje elementa na spletnih straneh obstajajo različne vrste lokatorjev:
Lokatorji XPath | Poiščite različne elemente na spletni strani |
ID | Iskanje elementa po ID-ju elementa |
Ime predavanja | Za iskanje elementa po imenu razreda elementa |
Ime | Če želite poiskati element po imenu elementa |
Besedilo povezave | Za iskanje elementa po besedilu povezave |
XPath | XPath, potreben za iskanje dinamičnega elementa in prehod med različnimi elementi spletne strani |
Pot CSS | Pot CSS najde tudi elemente, ki nimajo imena, razreda ali ID-ja. |
Vrste X-poti
Obstajata dve vrsti XPath:
1) Absolutni XPath
2) Relativni XPath
Absolutni XPath:
Element je neposreden način iskanja, vendar je pomanjkljivost absolutnega XPath-a ta, da če na poti elementa pride do kakršnih koli sprememb, XPath ne uspe.
Ključna značilnost XPath je, da se začne z eno poševnico naprej (/), kar pomeni, da lahko element izberete v korenskem vozlišču.
Spodaj je primer absolutnega izraza xpath elementa, prikazanega na spodnjem zaslonu.
OPOMBA: Na tej http://demo.guru99.com/test/selenium-xpath.html lahko izvajate naslednjo vajo XPath
Kliknite tukaj, če video ni dostopen
Absolutni 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]
Absolutni XPath
Relativni Xpath:
Relativni Xpath se začne od sredine HTML DOM strukture. Začne se z dvojno poševnico naprej (//). Lahko išče elemente kjer koli na spletni strani, kar pomeni, da vam ni treba pisati dolge xpath in lahko začnete od sredine HTML DOM strukture. Relativni Xpath je vedno bolj zaželen, saj ni popolna pot od korenskega elementa.
Spodaj je primer relativnega izraza XPath istega elementa, prikazanega na spodnjem zaslonu. To je običajna oblika, ki se uporablja za iskanje elementa s strani XPath.
Kliknite tukaj, če video ni dostopen
Relativni XPath: // div [@ class = 'featured-box cloumnsize1'] // h4 [1] // b [1]
Relativni XPath
Kaj so osi XPath.
Osi XPath iščejo različna vozlišča v dokumentu XML iz trenutnega vozlišča konteksta. Osi XPath so metode, ki se uporabljajo za iskanje dinamičnih elementov, kar sicer ni mogoče z običajno metodo XPath, ki nima ID-ja, imena razreda, imena itd.
Metode osi se uporabljajo za iskanje tistih elementov, ki se dinamično spremenijo pri osvežitvi ali drugih operacijah. V programu Selenium Webdriver se pogosto uporabljajo metode osi, kot so otrok, starš, prednik, brat ali sestra, predhodnik, jaz itd.
Uporaba XPath Handling kompleksnih in dinamičnih elementov v selenu
1) Osnovni XPath:
Izraz XPath izbere vozlišča ali seznam vozlišč na podlagi atributov, kot so ID, Ime, Ime razreda itd., Iz dokumenta XML, kot je prikazano spodaj.
Xpath = // vnos [@ name = 'uid']
Tu je povezava za dostop do strani http://demo.guru99.com/test/selenium-xpath.html
Osnovni XPath
Nekaj osnovnih izrazov xpath:
Xpath = // vnos [@ type = 'text']Xpath = // oznaka [@ id = 'message23']Xpath = // vnos [@ value = 'RESET']Xpath = // * [@ class = 'barone']Xpath = // a [@ href = 'http: //demo.guru99.com/']Xpath = //img[@src='//cdn.guru99.com/images/home/java.png.webp ']
2) Vsebuje ():
Vsebuje () je metoda, ki se uporablja v izrazu XPath. Uporablja se, kadar se vrednost katerega koli atributa dinamično spreminja, na primer podatki za prijavo.
Vsebinska funkcija ima možnost najti element z delnim besedilom, kot je prikazano v spodnjem primeru XPath.
V tem primeru smo element poskušali prepoznati samo z uporabo delne besedilne vrednosti atributa. V spodnjem izrazu XPath je namesto gumba za oddajo uporabljena delna vrednost 'sub'. Opazimo, da je element uspešno najden.
Popolna vrednost 'Type' je 'submit', vendar se uporablja le delna vrednost 'sub'.
Xpath = // * [vsebuje (@ vrsta, 'pod')]
Popolna vrednost 'name' je 'btnLogin', vendar se uporablja le delna vrednost 'btn'.
Xpath = // * [vsebuje (@ ime, 'btn')]
V zgornjem izrazu smo kot atribut vzeli ime, btn pa kot delno vrednost, kot je prikazano na spodnjem posnetku zaslona. Najdemo dva elementa (PRIJAVA IN PONASTAVITEV), saj se njihov atribut 'ime' začne z 'btn'.
Podobno smo v spodnjem izrazu vzeli 'id' kot atribut in 'sporočilo' kot delno vrednost. Najdemo dva elementa ('User-ID ne sme biti prazen' & 'Geslo ne sme biti prazno'), saj se njegov atribut 'name' začne s 'message'.
Xpath = // * [vsebuje (@ id, 'sporočilo')]
V spodnjem izrazu smo "besedilo" povezave vzeli kot atribut in "tukaj" kot delno vrednost, kot je prikazano na spodnjem posnetku zaslona. To bo našlo povezavo ('tukaj'), saj prikaže besedilo 'tukaj'.
Xpath = // * [vsebuje (besedilo (), 'tukaj')]Xpath = // * [vsebuje (@ href, 'guru99.com')]
3) Uporaba ALI IN IN:
V izrazu ALI se uporabljata dva pogoja, ali naj bo prvi pogoj ALI drugi pogoj resničen. Velja tudi, če je izpolnjen kateri koli pogoj ali morda oboje. Pomeni, da mora biti kateri koli en pogoj izpolnjen za iskanje elementa.
V spodnjem izrazu XPath identificira elemente, katerih posamezni ali oba pogoja sta resnična.
Xpath = // * [@ type = 'submit' or @ name = 'btnReset']
Označevanje obeh elementov kot elementa "PRIJAVA" z atributom "tip" in elementa "RESET" z atributom "ime".
V izrazu AND sta uporabljena dva pogoja, oba pogoja bi morala biti resnična, da bi našli element. Elementa ne najde, če je kateri koli pogoj napačen.
Xpath = // vnos [@ type = 'submit' and @ name = 'btnLogin']
V spodnjem izrazu označite element 'PRIJAVA', saj imata atribut 'tip' in 'ime'.
4) Xpath se začne s
XPath start-with () je funkcija, ki se uporablja za iskanje spletnega elementa, katerega vrednost atributa se spremeni ob osvežitvi ali drugih dinamičnih operacijah na spletni strani. Pri tej metodi se začetno besedilo atributa ujema, da se najde element, katerega vrednost atributa se dinamično spreminja. Najdete lahko tudi elemente, katerih vrednost atributa je statična (ne spremembe).
Na primer -: Recimo, da se ID določenega elementa spreminja dinamično, kot je:
Id = "message12"
Id = "message345"
Id = "message8769"
in tako naprej ... ampak začetno besedilo je enako. V tem primeru uporabimo izraz Start-with.
V spodnjem izrazu sta dva elementa z ID-jem, ki se začne s "sporočilom" (tj. "User-ID ne sme biti prazen" in "Geslo ne sme biti prazno"). V spodnjem primeru XPath najde tiste elemente, katerih 'ID' se začne s 'message'.
Xpath = // oznaka [začne se z (@ id, 'sporočilo')]
5) Funkcija besedila XPath ()
Funkcija XPath text () je vgrajena funkcija spletnega gonilnika selena, ki se uporablja za iskanje elementov na podlagi besedila spletnega elementa. Pomaga najti natančne besedilne elemente in jih poišče znotraj nabora vozlišč besedila. Elementi, ki jih je treba najti, morajo biti v obliki nizov.
V tem izrazu s funkcijo besedila najdemo element z natančnim ujemanjem besedila, kot je prikazano spodaj. V našem primeru najdemo element z besedilom "UserID".
Xpath = // td [text () = 'UserID']
6) Metode osi XPath:
Te metode osi XPath se uporabljajo za iskanje kompleksnih ali dinamičnih elementov. Spodaj bomo videli nekatere od teh metod.
Za ponazoritev te metode osi XPath bomo uporabili demo stran Guru99 bank.
a) Po:
Izbere vse elemente v dokumentu trenutnega vozlišča () [Polje za vnos UserID je trenutno vozlišče], kot je prikazano na spodnjem zaslonu.
Xpath = // * [@ type = 'text'] // naslednji :: input
Obstajajo 3 "vhodna" vozlišča, ki se ujemajo z uporabo "naslednje" osi - geslo, gumb za prijavo in ponastavitev. Če se želite osredotočiti na kateri koli določen element, lahko uporabite spodnjo metodo XPath:
Xpath = // * [@ type = 'text'] // naslednji :: input [1]
XPath lahko spremenite v skladu z zahtevo tako, da vstavite [1], [2]
… in tako naprej.Z vnosom kot "1" spodnji posnetek zaslona najde določeno vozlišče, ki je element vnosnega polja "Geslo".
b) Prednik:
Os prednika izbere vse elemente prednikov (stari starši, starši itd.) Trenutnega vozlišča, kot je prikazano na spodnjem zaslonu.
V spodnjem izrazu najdemo element prednikov trenutnega vozlišča (vozlišče "ENTERPRISE TESTING").
Xpath = // * [text () = 'Testiranje podjetja'] // predak :: div
Obstaja 13 vozlišč "div", ki se ujemajo z uporabo osi "prednik". Če se želite osredotočiti na kateri koli določen element, lahko uporabite spodnji XPath, kjer spremenite številko 1, 2 glede na vaše zahteve:
Xpath = // * [text () = 'Testiranje podjetja'] // predak :: div [1]
XPath lahko spremenite v skladu z zahtevo tako, da vstavite [1], [2]
… in tako naprej.c) Otrok:
Izbere vse podrejene elemente trenutnega vozlišča (Java), kot je prikazano na spodnjem zaslonu.
Xpath = // * [@ id = 'java_technologies'] // otrok :: li
Obstaja 71 vozlišč "li", ki se ujemajo z uporabo "podrejene" osi. Če se želite osredotočiti na kateri koli določen element, lahko uporabite spodnjo pot xpath:
Xpath = // * [@ id = 'java_technologies'] // otrok :: li [1]
Xpath lahko spremenite glede na zahtevo tako, da vstavite [1], [2]
… in tako naprej.d) Predhodno:
Izberite vsa vozlišča, ki so pred trenutnim vozliščem, kot je prikazano na spodnjem zaslonu.
V spodnjem izrazu identificira vse vhodne elemente pred gumbom "PRIJAVA", to je vnosni element Userid in geslo .
Xpath = // * [@ type = 'submit'] // pred :: input
Obstajata 2 "vhodni" vozlišči, ki se ujemata z uporabo "predhodne" osi. Če se želite osredotočiti na kateri koli element, lahko uporabite spodnji XPath:
Xpath = // * [@ type = 'submit'] // predhodno :: input [1]
Xpath lahko spremenite glede na zahtevo tako, da vstavite [1], [2]
… in tako naprej.e) Pobratimi:
Izberite naslednje brate in sestre kontekstnega vozlišča. Bratje in sestre so na isti ravni trenutnega vozlišča, kot je prikazano na spodnjem zaslonu. Element bo našel po trenutnem vozlišču.
xpath = // * [@ type = 'submit'] // following-sibling :: input
Ena vhodna vozlišča, ki se ujemajo z uporabo osi "naslednik / sestra".
f) Starš:
Izbere nadrejeno mesto trenutnega vozlišča, kot je prikazano na spodnjem zaslonu.
Xpath = // * [@ id = 'rt-feature'] // nadrejeni :: div
Obstaja 65 vozlišč "div", ki se ujemajo z uporabo "nadrejene" osi. Če se želite osredotočiti na kateri koli element, lahko uporabite spodnji XPath:
Xpath = // * [@ id = 'rt-feature'] // nadrejeni :: div [1]
XPath lahko spremenite v skladu z zahtevo tako, da vstavite [1], [2]
… in tako naprej.g) Jaz:
Izbere trenutno vozlišče ali "self" pomeni, da označuje samo vozlišče, kot je prikazano na spodnjem zaslonu.
Eno vozlišče se ujema z uporabo "samo" osi. Vedno najde samo eno vozlišče, saj predstavlja samoelement.
Xpath = // * [@ type = 'geslo'] // self :: input
h) Potomak:
Izbere potomce trenutnega vozlišča, kot je prikazano na spodnjem zaslonu.V spodnjem izrazu identificira vse potomce elementa do trenutnega elementa (element okvirja "Main body surround"), kar pomeni dol pod vozliščem (podrejeno vozlišče, vozlišče vnuka itd.).
Xpath = // * [@ id = 'rt-feature'] // potomec :: a
Obstaja 12 vozlišč "povezav", ki se ujemajo z uporabo osi "potomca". Če se želite osredotočiti na kateri koli element, lahko uporabite spodnji XPath:
Xpath = // * [@ id = 'rt-feature'] // potomec :: a [1]
XPath lahko spremenite v skladu z zahtevo tako, da vstavite [1], [2]
… in tako naprej.Povzetek:
XPath je potreben za iskanje elementa na spletni strani za izvedbo operacije nad tem elementom.
- Obstajata dve vrsti selena XPath:
- Absolutni XPath
- Relativni XPath
- Osi XPath so metode, ki se uporabljajo za iskanje dinamičnih elementov, ki jih sicer ni mogoče najti z običajno metodo XPath
- Izraz XPath izbere vozlišča ali seznam vozlišč na podlagi atributov, kot so ID, Ime, Ime razreda itd., Iz dokumenta XML.