XPath sisse Selenium: Kuidas leida ja kirjutada? (Tekst, Sisaldab JA)
Milles XPath on Selenium?
XPath sisse Selenium on XML-tee, mida kasutatakse lehe HTML-struktuuris navigeerimiseks. See on süntaks või keel veebilehe mis tahes elemendi leidmiseks XML-i teeavaldise abil. XPathi saab kasutada nii HTML- kui ka XML-dokumentide jaoks, et leida HTML-i DOM-i struktuuri abil veebilehel mis tahes elemendi asukoht.
In Selenium automatiseerimine, kui elemente ei leia üldised lokaatorid nagu id, klass, nimi jne, siis kasutatakse veebilehelt elemendi leidmiseks XPathi.
Selles õpetuses õpime tundma Xpathi ja erinevaid XPathi avaldisi, et leida keerukaid või dünaamilisi elemente, mille atribuudid muutuvad dünaamiliselt värskendamisel või mis tahes toimingul.
XPath süntaks
XPath sisaldab veebilehel asuva elemendi teed. Standardne XPathi süntaks XPathi loomiseks on.
Xpath=//tagname[@attribute='value']
XPathi põhivormingut seleenis selgitatakse allpool koos ekraanipildiga.
- // : Valige praegune sõlm.
- Sildi nimi: Konkreetse sõlme sildinimi.
- @: Valige atribuut.
- Atribuut: Sõlme atribuudi nimi.
- Maksumus: Atribuudi väärtus.
Elemendi veebilehtedel täpseks leidmiseks on erinevat tüüpi lokaatoreid:
XPathi lokaatorid | Veebilehelt leiate erinevaid elemente |
---|---|
ID | Elemendi leidmiseks elemendi ID järgi |
Klassi nimi | 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 veebilehe erinevate elementide vahel liikumiseks |
CSS-i tee | CSS-i tee otsib ka elemente, millel pole nime, klassi ega ID-d. |
X-tee tüübid
XPath 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 teekonnas tehakse muudatusi, siis XPath ebaõnnestub.
XPathi põhiomadus on see, et see algab ühe kaldkriipsuga (/), mis tähendab, et saate valida elemendi juursõlmest.
Allpool on näide alloleval ekraanil näidatud elemendi absoluutsest Xpath-avaldisest.
MÄRKUS. Selle kohta saate harjutada järgmist XPathi harjutust http://demo.guru99.com/test/selenium-xpath.html
Click siin kui video pole juurdepääsetav
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]
Suhteline Xpath
Suhteline Xpath algab HTML DOM-i struktuuri keskelt. See algab kahekordse kaldkriipsuga (//). See võib otsida elemente kõikjal veebilehel, see tähendab, et pole vaja kirjutada pikka xpath-i ja võite alustada HTML-i DOM-i struktuuri keskelt. Suhteline Xpath on alati eelistatud, kuna see ei ole juurelemendist täielik tee.
Allpool on näide sama elemendi suhtelisest XPath-avaldisest, mis on näidatud alloleval ekraanil. See on levinud vorming, mida kasutatakse XPathi elemendi leidmiseks.
Click siin kui video pole juurdepääsetav
Relative XPath: //div[@class='featured-box cloumnsize1']//h4[1]//b[1]
Mis on XPathi teljed.
XPathi teljed otsivad XML-dokumendis praegusest kontekstisõlmest erinevaid sõlme. XPathi teljed on meetodid, mida kasutatakse dünaamiliste elementide leidmiseks, mis muidu pole võimalikud tavalise XPathi meetodiga, millel puudub ID, klassinimi, nimi jne.
Telgede meetodeid kasutatakse nende elementide leidmiseks, mis värskendamisel või muudel toimingutel dünaamiliselt muutuvad. Tavaliselt kasutatakse vähe telgede meetodeid Selenium Veebidraiver nagu laps, vanem, esivanem, õde-vend, eelnev, mina jne.
Kuidas dünaamilist XPathi sisse kirjutada Selenium Veebidraiver
1) Põhiline XPath
XPath avaldis valige sõlmed või sõlmede loend selliste atribuutide alusel nagu ID, nimi, klassinimijne XML-dokumendist, nagu allpool näidatud.
Xpath=//input[@name='uid']
Siin on link lehele pääsemiseks http://demo.guru99.com/test/selenium-xpath.html
Veel mõned põhilised xpath avaldised:
Xpath=//input[@type='text'] Xpath=//label[@id='message23'] Xpath=//input[@value='RESET'] Xpath=//*[@class='barone'] Xpath=//a[@href='http://demo.guru99.com/'] Xpath=//img[@src='//guru99.com/images/home/java.png']
2) Sisaldab ()
Contains() on XPathi avaldises kasutatav meetod. Seda kasutatakse siis, kui mis tahes atribuudi väärtus muutub dünaamiliselt, näiteks sisselogimisinfo.
Sisaldamise funktsioonil on võimalus leida osalise tekstiga element, nagu on näidatud allolevas XPathi näites.
Selles näites proovisime elementi tuvastada, kasutades atribuudi osalist tekstiväärtust. Allolevas XPathi avaldises kasutatakse esitamisnupu asemel osalist väärtust 'sub'. Võib täheldada, et element leitakse edukalt.
„Tüüp” täielik väärtus on „submit”, kuid kasutatakse ainult osalist väärtust „sub”.
Xpath=//*[contains(@type,'sub')]
Täielik nimi "name" on "btnLogin", kuid kasutab ainult osalist väärtust "btn".
Xpath=//*[contains(@name,'btn')]
Ülaltoodud avaldises oleme võtnud atribuudina "name" 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 alltoodud avaldises võtnud atribuudiks 'id' ja osaliseks väärtuseks 'message'. See leiab 2 elementi ("Kasutaja ID ei tohi olla tühi" ja "Parool ei tohi olla tühi"), kuna selle atribuut "id" algab sõnadega "message".
Xpath=//*[contains(@id,'message')]
Allolevas väljendis oleme võtnud lingi "teksti" atribuudina ja "siin" osalise väärtusena, nagu on näidatud alloleval ekraanipildil. See leiab lingi ("siit"), kuna kuvab teksti "siin".
Xpath=//*[contains(text(),'here')]
Xpath=//*[contains(@href,'guru99.com')]
3) VÕI & JA kasutamine
VÕI-avaldises kasutatakse kahte tingimust, kas 1. tingimus VÕI 2. tingimus peaks olema tõene. See kehtib ka siis, kui mõni tingimus on tõene või võib-olla mõlemad. Tähendab, et elemendi leidmiseks peaks üks tingimus olema tõene.
Allolevas XPathi avaldises identifitseerib see elemendid, mille üks või mõlemad tingimused on tõesed.
Xpath=//*[@type='submit' or @name='btnReset']
Mõlema elemendi esiletõstmine „LOGIN” elemendina, millel on atribuut „tüüp”, ja „RESET” elemendina, millel on atribuut „nimi”.
AND-avaldises kasutatakse kahte tingimust, elemendi leidmiseks peavad mõlemad tingimused olema tõesed. See ei leia elementi, kui mõni tingimus on vale.
Xpath=//input[@type='submit' and @name='btnLogin']
Allolevas avaldises elemendi „LOGIN” esiletõstmine, kuna sellel on nii atribuut „tüüp” kui ka „nimi”.
4) XPat algab-koos
XPath algab tähega () on funktsioon, mida kasutatakse veebielemendi leidmiseks, mille atribuudi väärtust muudetakse värskendamisel või muude dünaamiliste toimingutega veebilehel. Selle meetodi puhul sobitatakse atribuudi algustekst, et leida element, mille atribuudi väärtus muutub dünaamiliselt. Samuti võite leida elemente, mille atribuudi väärtus on staatiline (ei muutu).
Näiteks -: oletame, et konkreetse elemendi ID muutub dünaamiliselt nagu:
Id=” sõnum12″
Id=” sõnum345″
Id=” sõnum8769″
ja nii edasi.. aga esialgne tekst on sama. Sel juhul kasutame avaldist Start-with.
Allolevas avaldises on kaks elementi ID-ga, mis algavad sõnumiga (st 'Kasutaja-ID ei tohi olla tühi' ja 'Parool ei tohi olla tühi'). Allolevas näites leiab XPath need elemendid, mille 'ID' algab sõnaga 'message'.
Xpath=//label[starts-with(@id,'message')]
5) XPath Text() funktsioon
. XPath text() funktsioon on seleeni veebidraiveri sisseehitatud funktsioon, mida kasutatakse elementide asukoha leidmiseks veebielemendi teksti põhjal. See aitab leida täpseid tekstielemente ja tuvastab elemendid tekstisõlmede komplektis. Paigutavad elemendid peaksid olema stringi kujul.
Selles avaldises leiame tekstifunktsiooniga elemendi täpse tekstivastusega, nagu allpool näidatud. Meie puhul leiame elemendi tekstiga “UserID”.
Xpath=//td[text()='UserID']
XPath telgede meetodid
Neid XPathi telgede 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.
1) Jälgimine
Valib kõik praeguse sõlme ( ) dokumendis olevad elemendid [ UserID sisestuskast on praegune sõlm], nagu on näidatud alloleval ekraanil.
Xpath=//*[@type='text']//following::input
Seal on 3 "sisend" sõlme, mis sobivad "järgiva" telje abil - parool, sisselogimis- ja lähtestamisnupp. Kui soovite keskenduda mõnele konkreetsele elemendile, võite kasutada allolevat XPathi meetodit:
Xpath=//*[@type='text']//following::input[1]
XPathi saab vastavalt nõudele muuta, pannes [1],[2]……………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………….
Kui sisendiks on 1, leiab allolev ekraanipilt konkreetse sõlme, milleks on sisestuskasti element "Parool".
2) Esivanem
Esivanematelg valib praeguse sõlme kõik esivanemate elemendid (vanavanem, vanem jne), nagu on näidatud alloleval ekraanil.
Allolevas avaldises leiame praeguse sõlme ("ETTEVÕTTE TESTIMINE") esivanemate elemendi.
Xpath=//*[text()='Enterprise Testing']//ancestor::div
Seal on 13 "div" sõlme, mis sobivad "esivanema" telje abil. Kui soovite keskenduda mõnele konkreetsele elemendile, võite kasutada allolevat XPathi, kus muudate numbreid 1, 2 vastavalt oma nõudele:
Xpath=//*[text()='Enterprise Testing']//ancestor::div[1]
XPathi saab muuta vastavalt nõudele, pannes [1], [2]……………………………………………………………………………………………
3) Laps
Valib kõik aktiivse sõlme alamelemendid (Java), nagu on näidatud alloleval ekraanil.
Xpath=//*[@id='java_technologies']//child::li
Seal on 71 "li" sõlme, mis sobivad "lapse" telje abil. Kui soovite keskenduda mõnele konkreetsele elemendile, võite kasutada allolevat xpath:
Xpath=//*[@id='java_technologies']//child::li[1]
Saate muuta xpath vastavalt nõudele, pannes [1],[2]………… ja nii edasi.
4) Eelnev
Valige kõik sõlmed, mis asuvad enne praegust sõlme, nagu on näidatud alloleval ekraanil.
Allolevas avaldises identifitseerib see kõik sisendelemendid enne nuppu LOGIN, see tähendab Kasutajatunnus ja parool sisendelement.
Xpath=//*[@type='submit']//preceding::input
Seal on 2 sisendsõlme, mis sobivad "eelmise" telje abil. Kui soovite keskenduda mõnele konkreetsele elemendile, võite kasutada allolevat XPathi:
Xpath=//*[@type='submit']//preceding::input[1]
Saate muuta xpath vastavalt nõudele, pannes [1],[2]………… ja nii edasi.
5) Järgnev õde-vend
Valige kontekstisõlme järgmised õed-vennad. Õed-vennad on praeguse sõlmega samal tasemel, nagu on näidatud alloleval ekraanil. See leiab elemendi pärast praegust sõlme.
xpath=//*[@type='submit']//following-sibling::input
Üks sisendsõlmede sobitamine, kasutades telge „järgmine õde”.
6) Lapsevanem
Valib praeguse sõlme vanema, nagu on näidatud alloleval ekraanil.
Xpath=//*[@id='rt-feature']//parent::div
Seal on 65 "div" sõlme, mis sobivad "vanema" telje abil. Kui soovite keskenduda mõnele konkreetsele elemendile, võite kasutada allolevat XPathi:
Xpath=//*[@id='rt-feature']//parent::div[1]
XPathi saab vastavalt nõudele muuta, pannes [1],[2]……………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………….
7) Ise
Valib praeguse sõlme või "ise" tähendab, et see näitab sõlme ennast, nagu on näidatud alloleval ekraanil.
Ühe sõlme sobitamine "ise" telje abil. See leiab alati ainult ühe sõlme, kuna see esindab minaelementi.
Xpath =//*[@type='password']//self::input
8) järglane
Valib praeguse sõlme järeltulijad, nagu on näidatud alloleval ekraanil.
Allolevas avaldises identifitseerib see kõik praeguse elemendi järeltulijad ('Main body surround' raamielement), mis tähendab sõlme all (lapsesõlm , lapselapse sõlm jne).
Xpath=//*[@id='rt-feature']//descendant::a
Seal on 12 "lingi" sõlme, mis sobivad "järglase" telje abil. Kui soovite keskenduda mõnele konkreetsele elemendile, võite kasutada allolevat XPathi:
Xpath=//*[@id='rt-feature']//descendant::a[1]
XPathi saab vastavalt nõudele muuta, pannes [1],[2]……………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………….
kokkuvõte
XPath on vajalik veebilehelt elemendi leidmiseks, et teha selle konkreetse elemendiga toiming.
- Seleeni XPath on kahte tüüpi:
- Absoluutne XPath
- Suhteline XPath
- XPathi teljed on meetodid, mida kasutatakse dünaamiliste elementide leidmiseks, mida muidu pole tavalise XPath meetodiga võimalik leida
- XPathi avaldis vali sõlmed või sõlmede loend XML-dokumendi atribuutide, nagu ID, nimi, klassinimi jne, alusel.
Kontrollige ka: - Selenium Õpetus algajatele: õppige WebDriver 7 päevaga