Ak v automatizácii selénu nenájdete prvky všeobecnými lokátormi, ako sú id, trieda, názov atď., Potom sa na nájdenie prvku na webovej stránke použije XPath.
V tomto tutoriále sa dozvieme o xpath a rôznych výrazoch XPath na vyhľadanie komplexných alebo dynamických prvkov, ktorých atribúty sa dynamicky menia pri obnovení alebo pri akýchkoľvek operáciách.
V tomto výučbe XPath sa naučíte -
- Čo je XPath?
- Typy dráhy X.
- Absolútna XPath
- Relatívna XPath
- Základná XPath
- Obsahuje ()
- Pomocou ALEBO A A
- Začína funkciou
- Text ()
- Metódy osí XPath
- Nasledujúci
- Predok
- Dieťa
- Predchádzajúce
- Nasledujúci súrodenec
- Rodič
- Ja
- Potomok
Čo je XPath v seléne?
XPath in Selenium je cesta XML používaná na navigáciu v štruktúre HTML stránky. Je to syntax alebo jazyk na vyhľadanie ľubovoľného prvku na webovej stránke pomocou výrazu cesty XML. XPath možno použiť pre dokumenty HTML aj XML na vyhľadanie umiestnenia ľubovoľného prvku na webovej stránke pomocou štruktúry HTML DOM.
Základný formát XPath v seléne je vysvetlený nižšie snímkou obrazovky.
Základný formát XPath
Syntax pre XPath selén:
XPath obsahuje cestu k prvku umiestnenému na webovej stránke. Štandardná syntax XPath na vytváranie XPath je.
Xpath = // nazov znacky [@ attribute = 'value']
- //: Vyberte aktuálny uzol.
- Názov značky: Názov značky konkrétneho uzla.
- @: Vyberte atribút.
- Atribút: Názov atribútu uzla.
- Hodnota: hodnota atribútu.
Na presné vyhľadanie prvku na webových stránkach existujú rôzne typy lokátorov:
Vyhľadávače XPath | Nájdite rôzne prvky na webovej stránke |
ID | Vyhľadanie prvku podľa ID prvku |
Názov triedy | Vyhľadanie prvku podľa názvu triedy prvku |
názov | Vyhľadanie prvku podľa názvu prvku |
Text odkazu | Vyhľadanie prvku podľa textu odkazu |
XPath | Na nájdenie dynamického prvku a na prechod medzi rôznymi prvkami webovej stránky je potrebný XPath |
Cesta CSS | Cesta CSS tiež vyhľadá prvky bez názvu, triedy alebo ID. |
Typy dráhy X.
Existujú dva typy XPath:
1) Absolútna XPath
2) Relatívna XPath
Absolútna XPath:
Je to priamy spôsob vyhľadania prvku, ale nevýhodou absolútneho XPath je, že ak dôjde k zmenám v ceste k prvku, XPath zlyhá.
Kľúčovou charakteristikou XPath je, že začína jednoduchou lomkou (/), čo znamená, že môžete vybrať prvok z koreňového uzla.
Nižšie je uvedený príklad absolútneho výrazu cesty xp prvku zobrazeného na obrazovke nižšie.
POZNÁMKA: Nasledujúce cvičenie XPath si môžete precvičiť na tejto http://demo.guru99.com/test/selenium-xpath.html
Ak video nie je prístupné, kliknite sem
Absolútna 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]
Absolútna XPath
Relatívna Xpath:
Relatívny Xpath začína od stredu štruktúry HTML DOM. Začína sa to dvojitou lomkou (//). Môže prehľadávať prvky kdekoľvek na webovej stránke, znamená to, že nie je potrebné písať dlhú cestu xpath a môžete začať od stredu štruktúry HTML DOM. Relatívna Xpath je vždy preferovaná, pretože to nie je úplná cesta od koreňového prvku.
Nižšie je uvedený príklad relatívneho výrazu XPath rovnakého prvku zobrazeného na obrazovke nižšie. Toto je bežný formát používaný na vyhľadanie prvku v XPath.
Ak video nie je prístupné, kliknite sem
Relatívna XPath: // div [@ class = 'featured-box cloumnsize1'] // h4 [1] // b [1]
Relatívna XPath
Čo sú to osi XPath.
Osy XPath prehľadávajú rôzne uzly v dokumente XML od aktuálneho kontextového uzla. Osy XPath sú metódy používané na hľadanie dynamických prvkov, ktoré inak nie sú možné bežnou metódou XPath bez ID, názvu triedy, názvu atď.
Metódy osi sa používajú na nájdenie tých prvkov, ktoré sa dynamicky menia pri obnove alebo iných operáciách. V selenovom webdriveri sa bežne používa niekoľko metód osí, ako napríklad dieťa, rodič, predok, súrodenec, predchádzajúci, ja atď.
Používanie XPath Handling komplexných a dynamických prvkov v seléne
1) Základná XPath:
Výraz XPath vyberá uzly alebo zoznam uzlov na základe atribútov ako ID, Meno, Názov triedy atď. Z dokumentu XML, ako je to znázornené nižšie.
Xpath = // vstup [@ name = 'uid']
Tu je odkaz na prístup na stránku http://demo.guru99.com/test/selenium-xpath.html
Základná XPath
Niektoré ďalšie základné výrazy xpath:
Xpath = // vstup [@ type = 'text']Xpath = // štítok [@ id = 'message23']Xpath = // vstup [@ value = 'RESET']Xpath = // * [@ class = 'barone']Xpath = // a [@ href = 'http: //demo.guru99.com/']Xpath = //img[@src='//cdn.guru99.com/images/home/java.png.webp ']
2) Obsahuje ():
Contains () je metóda použitá vo výraze XPath. Používa sa, keď sa hodnota ľubovoľného atribútu dynamicky mení, napríklad prihlasovacie informácie.
Funkcia contain má schopnosť nájsť element s čiastočným textom, ako je uvedené v príklade XPath nižšie.
V tomto príklade sme sa pokúsili identifikovať element pomocou čiastočnej textovej hodnoty atribútu. V nasledujúcom výraze XPath sa namiesto tlačidla odoslať používa čiastočná hodnota „sub“. Je možné pozorovať, že sa prvok úspešne našiel.
Celá hodnota typu je „odoslať“, ale používa sa iba čiastočná hodnota „sub“.
Xpath = // * [obsahuje (@ type, 'sub')]
Celková hodnota parametra „name“ je „btnLogin“, ale používa sa iba čiastočná hodnota „btn“.
Xpath = // * [obsahuje (@ meno, 'btn')]
Vo vyššie uvedenom výraze sme vzali „meno“ ako atribút a „btn“ ako čiastočnú hodnotu, ako je znázornené na obrázku nižšie. Nájdete 2 prvky (LOGIN & RESET), pretože ich atribút „name“ začína na „btn“.
Podobne v nasledujúcom výraze sme vzali „id“ ako atribút a „správu“ ako čiastočnú hodnotu. Nájdete 2 prvky („User-ID nesmie byť prázdne“ a „heslo nesmie byť prázdne“), pretože jeho atribút „name“ začína „message“.
Xpath = // * [obsahuje (@ id, 'správa')]
Vo výraze uvedenom nižšie sme vzali „text“ odkazu ako atribút a „tu“ ako čiastočnú hodnotu, ako je znázornené na obrázku nižšie. Nájdete odkaz („tu“), pretože zobrazuje text „tu“.
Xpath = // * [obsahuje (text (), 'tu')]Xpath = // * [obsahuje (@ href, 'guru99.com')]
3) Pomocou operátora OR & AND:
Vo výraze OR sa používajú dve podmienky, či má byť 1. podmienka ALEBO 2. podmienka pravdivá. Je tiež použiteľné, ak je splnená jedna podmienka alebo možno oboje. Znamená to, že pri hľadaní prvku by mala byť splnená ktorákoľvek podmienka.
V nasledujúcom výraze XPath identifikuje prvky, ktorých jediná alebo obe podmienky sú pravdivé.
Xpath = // * [@ type = 'submit' alebo @ name = 'btnReset']
Zvýraznenie oboch prvkov ako prvku „LOGIN“ s atribútom „type“ a prvku „RESET“ s atribútom „name“.
Vo výraze AND sa používajú dve podmienky, na nájdenie prvku by mali byť pravdivé obe podmienky. Nepodarí sa mu nájsť prvok, ak je niektorá z podmienok nepravdivá.
Xpath = // input [@ type = 'submit' and @ name = 'btnLogin']
V nasledujúcom výraze je zvýraznený prvok „LOGIN“, ktorý má atribút „type“ aj „name“.
4) Xpath začína -
XPath starts-with () je funkcia používaná na vyhľadanie webového prvku, ktorého hodnota atribútu sa zmení pri obnovení alebo inými dynamickými operáciami na webovej stránke. V tejto metóde je začiatočný text atribútu porovnaný s vyhľadaním prvku, ktorého hodnota atribútu sa dynamicky mení. Môžete tiež nájsť prvky, ktorých hodnota atribútu je statická (nezmenené).
Napríklad -: Predpokladajme, že ID konkrétneho prvku sa mení dynamicky, napríklad:
Id = "message12"
Id = "message345"
Id = "message8769"
a tak ďalej ... ale pôvodný text je rovnaký. V tomto prípade použijeme výraz Začíname s.
Vo výraze uvedenom nižšie sú dva prvky s ID začínajúcim „správou“ (tj. „User-ID nesmie byť prázdne“ & „heslo nesmie byť prázdne“). V nasledujúcom príklade XPath nájde tie prvky, ktorých „ID“ sa začína „správou“.
Xpath = // štítok [začína sa na (@ id, 'správa')]
5) Funkcia XPath Text ()
Funkcia XPath text () je vstavaná funkcia selénového webového ovládača, ktorá sa používa na vyhľadanie prvkov na základe textu webového prvku. Pomáha nájsť presné textové prvky a lokalizuje ich v množine textových uzlov. Prvky, ktoré sa majú umiestniť, by mali byť vo forme reťazca.
V tomto výraze s textovou funkciou nájdeme prvok s presnou zhodou textu, ako je uvedené nižšie. V našom prípade nájdeme prvok s textom „UserID“.
Xpath = // td [text () = 'UserID']
6) Metódy osí XPath:
Tieto metódy osí XPath sa používajú na nájdenie zložitých alebo dynamických prvkov. Ďalej uvidíme niektoré z týchto metód.
Na ilustráciu tejto metódy osí XPath použijeme ukážkovú stránku banky Guru99.
a) Nasledujúce:
Vyberie všetky prvky v dokumente aktuálneho uzla () [Vstupné pole UserID je aktuálny uzol], ako je znázornené na nasledujúcej obrazovke.
Xpath = // * [@ type = 'text'] // nasledujúci :: vstup
Existujú 3 „vstupné“ uzly, ktoré sa zhodujú pomocou „nasledujúceho“ osi - heslo, tlačidlo prihlásenia a reset. Ak sa chcete zamerať na akýkoľvek konkrétny prvok, môžete použiť nasledujúcu metódu XPath:
Xpath = // * [@ type = 'text'] // nasledujúci :: vstup [1]
Môžete zmeniť XPath podľa požiadavky vložením [1], [2]
… a tak ďalej.Pri vstupe ako „1“ nájde nasledujúca snímka obrazovky konkrétny uzol, ktorý je prvkom vstupného poľa „Heslo“.
b) Predok:
Os predkov vyberá všetky prvky predkov (prarodič, rodič atď.) Aktuálneho uzla, ako je zobrazené na nasledujúcej obrazovke.
V nasledujúcom výraze nájdeme prvok predkov aktuálneho uzla (uzol „TESTOVANIE PODNIKU“).
Xpath = // * [text () = 'Enterprise Testing'] // predok :: div
Existuje 13 uzlov „div“ zodpovedajúcich pomocou osi „predok“. Ak sa chcete zamerať na akýkoľvek konkrétny prvok, môžete použiť nižšie uvedený XPath, kde podľa svojich požiadaviek zmeníte číslo 1, 2:
Xpath = // * [text () = 'Enterprise Testing'] // predok :: div [1]
Môžete zmeniť XPath podľa požiadavky vložením [1], [2]
… a tak ďalej.c) Dieťa:
Vyberie všetky podradené prvky aktuálneho uzla (Java), ako je znázornené na nasledujúcej obrazovke.
Xpath = // * [@ id = 'java_technologies'] // dieťa :: li
Existuje 71 uzlov „li“ zodpovedajúcich pomocou „podradenej“ osi. Ak sa chcete zamerať na akýkoľvek konkrétny prvok, môžete použiť nasledujúcu cestu xpath:
Xpath = // * [@ id = 'java_technologies'] // dieťa :: li [1]
Môžete zmeniť xpath podľa požiadavky vložením [1], [2]
… a tak ďalej.d) predchádzajúce:
Vyberte všetky uzly, ktoré prichádzajú pred aktuálnym uzlom, ako je znázornené na nasledujúcej obrazovke.
Vo výraze uvedenom nižšie identifikuje všetky vstupné prvky pred tlačidlom „PRIHLÁSENIE“, ktoré je prvkom Userid a heslo .
Xpath = // * [@ type = 'submit'] // predchádzajúci :: vstup
Existujú 2 "vstupné" uzly zodpovedajúce pomocou "predchádzajúcej" osi. Ak sa chcete zamerať na akýkoľvek konkrétny prvok, môžete použiť nasledujúcu cestu XPath:
Xpath = // * [@ type = 'submit'] // predchádzajúci :: vstup [1]
Môžete zmeniť xpath podľa požiadavky vložením [1], [2]
… a tak ďalej.e) Nasledujúci súrodenec:
Vyberte nasledujúcich súrodencov kontextového uzla. Súrodenci sú na rovnakej úrovni aktuálneho uzla, ako je to zobrazené na obrazovke nižšie. Nájde prvok za aktuálnym uzlom.
xpath = // * [@ type = 'submit'] // following-sibling :: input
Zhoda jedného vstupného uzla pomocou osi „nasledujúci súrodenec“.
f) Rodič:
Vyberie nadradený objekt aktuálneho uzla, ako je znázornené na nasledujúcej obrazovke.
Xpath = // * [@ id = 'rt-feature'] // rodič :: div
Existuje 65 uzlov „div“ zodpovedajúcich pomocou osi „parent“. Ak sa chcete zamerať na akýkoľvek konkrétny prvok, môžete použiť nasledujúcu cestu XPath:
Xpath = // * [@ id = 'rt-feature'] // rodič :: div [1]
Môžete zmeniť XPath podľa požiadavky vložením [1], [2]
… a tak ďalej.g) Ja:
Vyberie aktuálny uzol alebo „self“ znamená, že označuje samotný uzol, ako je znázornené na nasledujúcej obrazovke.
Zhoda jedného uzla pomocou osi „ja“. Vždy nájde iba jeden uzol, pretože predstavuje vlastný prvok.
Xpath = // * [@ type = 'heslo'] // self :: vstup
h) Potomok:
Vyberie potomkov aktuálneho uzla, ako je znázornené na obrazovke nižšie.V nasledujúcom výraze identifikuje všetkých potomkov prvku k aktuálnemu prvku (prvok rámu „Obklopenie hlavného tela“), čo znamená dole pod uzlom (detský uzol, uzol vnuka atď.).
Xpath = // * [@ id = 'rt-feature'] // potomok :: a
Existuje 12 uzlov „odkazu“, ktoré sa zhodujú pomocou osi „potomok“. Ak sa chcete zamerať na akýkoľvek konkrétny prvok, môžete použiť nasledujúcu cestu XPath:
Xpath = // * [@ id = 'rt-feature'] // potomok :: a [1]
Môžete zmeniť XPath podľa požiadavky vložením [1], [2]
… a tak ďalej.Zhrnutie:
XPath je vyžadovaný na nájdenie prvku na webovej stránke, aby bolo možné vykonať operáciu s týmto konkrétnym prvkom.
- Existujú dva typy selénu XPath:
- Absolútna XPath
- Relatívna XPath
- Osy XPath sú metódy používané na hľadanie dynamických prvkov, ktoré inak nie je možné nájsť bežnou metódou XPath
- Výraz XPath vyberie uzly alebo zoznam uzlov na základe atribútov ako ID, Meno, Názov triedy atď. Z dokumentu XML.