Kui seleeni automatiseerimisel elemente ei leia üldised lokaatorid, näiteks id, klass, nimi jne, kasutatakse veebilehel elemendi leidmiseks XPathi.
Selles õpetuses õpime tundma xpathi ja erinevaid XPathi väljendeid, et leida keerukad või dünaamilised elemendid, mille atribuudid muutuvad värskendamisel või mis tahes toimingutel dünaamiliselt.
Selles XPathi õpetuses saate teada
- Mis on XPath?
- X-tee tüübid
- Absoluutne XPath
- Suhteline XPath
- Basic XPath
- Sisaldab()
- VÕI & JA kasutamine
- Alustab-funktsiooniga
- Tekst ()
- XPathi telgede meetodid
- Järgnev
- Esivanem
- Laps
- Eelnev
- Jälgivend
- Vanem
- Ise
- Järeltulija
Mis on XPath seleenis?
Seleenis olev XPath on XML-tee, mida kasutatakse navigeerimiseks lehe HTML-struktuuris. See on süntaks või keel veebisaidil mis tahes elemendi leidmiseks XML-tee avaldise abil. XPathi saab kasutada nii HTML- kui XML-dokumentide jaoks, et leida HTML DOM-i struktuuri abil mis tahes elemendi asukoht veebilehel.
Seleeni XPathi põhivormingut selgitatakse allpool ekraanipildiga.
XPathi põhivorming
XPathi seleeni süntaks:
XPath sisaldab veebilehel asuva elemendi teed. Standardne XPathi süntaks XPathi loomiseks on.
Xpath = // sildi nimi [@ attribute = 'väärtus']
- //: valige praegune sõlm.
- Sildi nimi: konkreetse sõlme silt.
- @: Valige atribuut.
- Atribuut: sõlme atribuudi nimi.
- Väärtus: atribuudi väärtus.
Elemendi täpseks leidmiseks veebilehtedel on erinevat tüüpi lokaatorid:
XPathi lokaatorid | Veebilehelt leiate erinevaid elemente |
ID | Elemendi leidmiseks elemendi ID järgi |
Klassinimi | Elemendi leidmiseks elemendi klassinime järgi |
Nimi | Elemendi leidmiseks elemendi nime järgi |
Lingi tekst | Elemendi leidmiseks lingi teksti järgi |
XPath | XPath on vajalik dünaamilise elemendi leidmiseks ja liikumiseks veebilehe erinevate elementide vahel |
CSS-tee | CSS-tee tuvastab ka elemendid, millel pole nime, klassi ega ID-d. |
X-tee tüübid
XPathi tüüpi on kahte tüüpi:
1) Absoluutne XPath
2) Suhteline XPath
Absoluutne XPath:
See on otsene viis elemendi leidmiseks, kuid absoluutse XPathi puuduseks on see, et kui elemendi tees on tehtud mingeid muudatusi, siis XPath ebaõnnestub.
XPathi peamine omadus on see, et see algab ühe kaldkriipsuga (/), mis tähendab, et saate elemendi valida juursõlmest.
Allpool on näide allpool oleval ekraanil kuvatud elemendi absoluutse xpath-avaldise kohta.
MÄRKUS. Sellel saidil http://demo.guru99.com/test/selenium-xpath.html saate harjutada järgmist XPathi harjutust
Kui videole pole juurdepääsu, klõpsake siin
Absoluutne 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]
Absoluutne XPath
Suhteline Xpath:
Suhteline Xpath algab HTML DOM-i struktuuri keskelt. See algab kahekordse kaldkriipsuga (//). See saab elemente otsida kõikjalt veebilehelt, see tähendab, et pole vaja kirjutada pikka xpathi ja võite alustada HTML DOM-i struktuuri keskelt. Alati eelistatakse suhtelist Xpathi, kuna see ei ole juurelemendist täielik tee.
Allpool on näide sama elemendi suhtelisest XPath-avaldisest, mis on näidatud allpool oleval ekraanil. See on levinud formaat, mida kasutatakse elemendi leidmiseks XPathi abil.
Kui videole pole juurdepääsu, klõpsake siin
Suhteline XPath: // div [@ class = 'featured-box cloumnsize1'] // h4 [1] // b [1]
Suhteline XPath
Mis on XPathi teljed.
XPathi teljed otsivad XML-dokumendis erinevatest sõlmedest praegust kontekstisõlme. XPathi teljed on meetodid, mida kasutatakse dünaamiliste elementide leidmiseks, mis muidu pole tavalise XPathi meetodi korral võimalik, millel puudub ID, klassi nimi, nimi jne.
Nende elementide leidmiseks kasutatakse teljemeetodeid, mis värskendamisel või muudel toimingutel dünaamiliselt muutuvad. Seleni veebidraiveris kasutatakse tavaliselt vähe teljemeetodeid, näiteks laps, vanem, esivanem, õde-vend, eelnev, mina jne.
XPathi keerukate ja dünaamiliste elementide käitlemine seleenis
1) Basic XPath:
XPathi avaldis valib sõlmed või sõlmede loendi XML-dokumendi atribuutide nagu ID, nimi, klassinimi jne alusel, nagu allpool illustreeritud.
Xpath = // sisend [@ name = 'uid']
Siin on link juurdepääsuks lehele http://demo.guru99.com/test/selenium-xpath.html
Basic XPath
Veel mõned xpathi põhilaused:
Xpath = // sisend [@ type = 'text']Xpath = // silt [@ id = 'message23']Xpath = // sisend [@ value = 'RESET']Xpath = // * [@ class = 'barone']Xpath = // a [@ href = 'http: //demo.guru99.com/']Xpath = //img[@src='//cdn.guru99.com/images/home/java.png.webp ']
2) Sisaldab ():
Contains () on meetod, mida kasutatakse XPathi avaldises. Seda kasutatakse siis, kui mis tahes atribuudi väärtus muutub dünaamiliselt, näiteks sisselogimisteave.
Funktsioonis sisaldada on võimalus leida osalise tekstiga element, nagu on näidatud allpool XPathi näites.
Selles näites püüdsime elementi tuvastada, kasutades lihtsalt atribuudi osalist tekstiväärtust. Allpool kasutatakse XPathi avaldise esitamise nupu asemel osalist väärtust "sub". Võib täheldada, et element leitakse edukalt.
Tüübi „Tüüp” täielik väärtus on „Esita”, kuid kasutab ainult osalist väärtust „Alam”.
Xpath = // * [sisaldab (@ type, 'sub')]
Nime „nimi” täielik väärtus on „btnLogin”, kuid kasutatakse ainult osalist väärtust „btn”.
Xpath = // * [sisaldab (@ nimi, 'btn')]
Ülaltoodud avaldises oleme võtnud atribuudina 'nimi' ja osalise väärtusena 'btn', nagu on näidatud alloleval ekraanipildil. See leiab 2 elementi (LOGIN & RESET), kuna nende atribuut 'name' algab tähega 'btn'.
Samamoodi oleme allpool olevas avaldises võtnud atribuudiks id ja osalisväärtuseks sõnumi sõnum. Siit leitakse 2 elementi ('User-ID ei tohi olla tühi' ja 'Parool ei tohi olla tühi'), kuna selle atribuut 'name' algab sõnumiga.
Xpath = // * [sisaldab (@ id, 'sõnum')]
Allolevas avaldises oleme võtnud atribuudina lingi "teksti" ja osalise väärtusena "siin", nagu on näidatud allpool oleval ekraanipildil. See leiab lingi ('siin'), kuna see kuvab teksti 'siin'.
Xpath = // * [sisaldab (text (), 'siin')]Xpath = // * [sisaldab (@ href, 'guru99.com')]
3) VÕI & JA kasutamine:
OR-väljendis kasutatakse kahte tingimust, olenemata sellest, kas 1. tingimus VÕI 2. tingimus peaks olema tõene. See on kohaldatav ka siis, kui mõni tingimus on tõene või võib-olla mõlemad. Tähendab, et ükski tingimus peaks elemendi leidmiseks olema tõene.
Allpool olevas XPathi avaldises tuvastab see elemendid, mille üks või mõlemad tingimused on tõesed.
Xpath = // * [@ type = 'esita' või @ nimi = 'btnReset']
Mõlema elemendi esiletõstmine elemendina "LOGIN", millel on atribuut "type", ja "RESET", millel on atribuut "name".
AND-väljendis kasutatakse kahte tingimust, elemendi leidmiseks peaksid mõlemad tingimused olema tõesed. See ei leia elementi, kui mõni tingimus on vale.
Xpath = // sisend [@ type = 'esita' ja @ nimi = 'btnLogin']
Tõstke allpool avaldises esile element "LOGIN", kuna sellel on nii atribuut "type" kui ka "name".
4) Xpath algab -ga
XPath starts-with () on funktsioon, mida kasutatakse veebielemendi leidmiseks, mille atribuudi väärtust muudetakse värskendamisel või muude veebisaidi dünaamiliste toimingute abil. Selles meetodis sobitatakse atribuudi algtekst elemendi leidmiseks, mille atribuudi väärtus muutub dünaamiliselt. Samuti võite leida elemente, mille atribuudi väärtus on staatiline (mitte muutusi).
Näiteks -: Oletame, et konkreetse elemendi ID muutub dünaamiliselt nagu:
Id = "message12"
Id = "message345"
Id = "message8769"
ja nii edasi ... kuid algtekst on sama. Sel juhul kasutame väljendit Start-with.
Allpool olevas avaldises on kaks ID-ga algavat elementi "sõnum" (st "User-ID ei tohi olla tühi" ja "Parool ei tohi olla tühi"). Allpool toodud näites leiab XPath need elemendid, mille ID algab sõnumiga.
Xpath = // silt [algab-with (@ id, 'sõnum')]
5) Funktsioon XPath Text ()
Funktsioon XPath text () on seleeni veebidraiveri sisseehitatud funktsioon, mida kasutatakse elementide leidmiseks veebielemendi teksti põhjal. See aitab leida täpseid tekstielemente ja otsib elemendid tekstisõlmede hulgast. Asutavad elemendid peaksid olema stringivormis.
Selles tekstifunktsiooniga avaldises leiame täpse tekstivastega elemendi, nagu allpool näidatud. Meie puhul leiame elemendi tekstiga "UserID".
Xpath = // td [tekst () = 'KasutajaID']
6) XPathi telgede meetodid:
Neid XPathi telje meetodeid kasutatakse keerukate või dünaamiliste elementide leidmiseks. Allpool näeme mõnda neist meetoditest.
Nende XPathi telgede meetodi illustreerimiseks kasutame Guru99 panga demosaiti.
a) Järgmine:
Valib kõik elemendid praeguse sõlme dokumendis () [UserID sisestuskast on praegune sõlm], nagu on näidatud alloleval ekraanil.
Xpath = // * [@ type = 'text'] // järgmine :: sisend
Seal on 3 "sisend" sõlme, mis sobivad, järgides telje parooli, sisselogimise ja lähtestamise nuppu. Kui soovite keskenduda mõnele konkreetsele elemendile, võite kasutada allolevat XPathi meetodit:
Xpath = // * [@ type = 'text'] // järgmine :: sisend [1]
XPathi saate vastavalt nõudele muuta, sisestades [1], [2]
… ja nii edasi.Kui sisend on „1”, leiab allolev ekraanipilt konkreetse sõlme, mis on „parooli” sisendkasti element.
b) Esivanem:
Esivanemate telg valib praeguse sõlme kõik esivanemad (vanavanemad, vanemad jne), nagu on näidatud allpool oleval ekraanil.
Allpool olevast avaldisest leiame praeguse sõlme esivanemate elemendi (sõlm "ENTERPRISE TESTING").
Xpath = // * [text () = 'Ettevõtte testimine'] // esivanem :: div
"Esivanema" telje abil sobib 13 "div" sõlme. Kui soovite keskenduda mõnele konkreetsele elemendile, võite kasutada allpool olevat XPathi, kus muudate numbrit 1, 2 vastavalt teie nõudele:
Xpath = // * [text () = 'Ettevõtte testimine'] // esivanem :: div [1]
XPathi saate vastavalt nõudele muuta, sisestades [1], [2]
… ja nii edasi.c) laps:
Valib kõik praeguse sõlme (Java) alamelemendid, nagu on näidatud alloleval ekraanil.
Xpath = // * [@ id = 'java_technologies'] // laps :: li
Lapse telje abil sobib 71 li-i sõlme. Kui soovite keskenduda mõnele konkreetsele elemendile, võite kasutada allolevat xpath:
Xpath = // * [@ id = 'java_technologies'] // laps :: li [1]
Saate xpathi vastavalt nõudele muuta, sisestades [1], [2]
… ja nii edasi.d) Eelnev:
Valige kõik sõlmed, mis jäävad praeguse sõlme ette, nagu on näidatud alloleval ekraanil.
Allpool olevas avaldises tuvastab see enne nuppu "SISSELogimine" kõik sisendelemendid, mis on Userid ja parooli sisendelemendid.
Xpath = // * [@ type = 'esita'] // enne :: sisendit
"Eelmise" telje abil sobib kokku 2 "sisend" sõlme. Kui soovite keskenduda mõnele konkreetsele elemendile, võite kasutada allolevat XPathi:
Xpath = // * [@ type = 'esita'] // eelnev :: sisend [1]
Saate xpathi vastavalt nõudele muuta, sisestades [1], [2]
… ja nii edasi.e) järg-vend:
Valige järgmised kontekstisõlme õed-vennad. Õed-vennad asuvad praeguse sõlme samal tasemel, nagu on näidatud alloleval ekraanil. See leiab elemendi pärast praegust sõlme.
xpath = // * [@ type = 'esita'] // järg-õde: sisend
Üks sisendsõlm sobitub telje "järg-õde" abil.
f) Vanem:
Valib praeguse sõlme vanema, nagu on näidatud alloleval ekraanil.
Xpath = // * [@ id = 'rt-feature'] // vanem :: div
Põhitelje abil sobib 65 "div" sõlme. Kui soovite keskenduda mõnele konkreetsele elemendile, võite kasutada allolevat XPathi:
Xpath = // * [@ id = 'rt-feature'] // vanem :: div [1]
XPathi saate vastavalt nõudele muuta, sisestades [1], [2]
… ja nii edasi.g) ise:
Valib praeguse sõlme või „ise“ tähendab, et see näitab sõlme ennast, nagu on näidatud alloleval ekraanil.
Üks sõlm sobitub "mina" telje abil. See leiab alati ainult ühe sõlme, kuna see esindab eneseelementi.
Xpath = // * [@ type = 'password'] // ise :: sisend
h) järeltulija:
Valib praeguse sõlme järeltulijad, nagu on näidatud allpool oleval ekraanil.Allpool olevas avaldises identifitseerib see kõik elemendi järeltulijad praegusele elemendile (raami element 'Body body surround'), mis tähendab sõlme all allapoole (lapse sõlm, lapselapse sõlm jne).
Xpath = // * [@ id = 'rt-feature'] // järeltulija :: a
"Järeltulija" telje abil sobib kokku 12 "lingi" sõlme. Kui soovite keskenduda mõnele konkreetsele elemendile, võite kasutada allolevat XPathi:
Xpath = // * [@ id = 'rt-feature'] // järeltulija :: a [1]
XPathi saate vastavalt nõudele muuta, sisestades [1], [2]
… ja nii edasi.Kokkuvõte:
XPath on vajalik selleks, et leida veebilehelt element, et teha seda konkreetset elementi.
- Seleeni XPathi on kahte tüüpi:
- Absoluutne XPath
- Suhteline XPath
- XPathi teljed on meetodid, mida kasutatakse dünaamiliste elementide leidmiseks, mida muidu pole võimalik tavalise XPathi meetodi abil leida
- XPathi avaldis valib sõlmed või sõlmede loendi XML-dokumendi atribuutide, näiteks ID, nimi, klassinimi jne alusel.