Vstup XPath Selenium: Tutorial

V ฤem je XPath Selenium?
Vstup XPath Selenium je cesta XML pouลพรญvanรก pro navigaci ve struktuลe HTML strรกnky. Je to syntaxe nebo jazyk pro nalezenรญ jakรฉhokoli prvku na webovรฉ strรกnce pomocรญ vรฝrazu cesty XML. XPath lze pouลพรญt pro dokumenty HTML i XML k nalezenรญ umรญstฤnรญ libovolnรฉho prvku na webovรฉ strรกnce pomocรญ struktury HTML DOM.
In Selenium automatizace, pokud elementy nejsou nalezeny obecnรฝmi lokรกtory, jako je id, tลรญda, nรกzev atd., pak se k nalezenรญ elementu na webovรฉ strรกnce pouลพije XPath.
V tomto tutoriรกlu se seznรกmรญme s vรฝrazem Xpath a rลฏznรฝmi vรฝrazy XPath, abychom naลกli komplexnรญ nebo dynamickรฉ prvky, jejichลพ atributy se dynamicky mฤnรญ pลi obnovฤ nebo jakรฝchkoli operacรญch.
Syntaxe XPath
XPath obsahuje cestu prvku umรญstฤnรฉho na webovรฉ strรกnce. Standardnรญ syntaxe XPath pro vytvรกลenรญ XPath je.
Xpath=//tagname[@attribute='value']
Zรกkladnรญ formรกt XPath v selenu je vysvฤtlen nรญลพe pomocรญ snรญmku obrazovky.

- //: Vyberte aktuรกlnรญ uzel.
- Nรกzev ลกtรญtku: Tagname konkrรฉtnรญho uzlu.
- @: Vyberte atribut.
- Atribut: Nรกzev atributu uzlu.
- Hodnota: Hodnota atributu.
Pro pลesnรฉ nalezenรญ prvku na webovรฝch strรกnkรกch existujรญ rลฏznรฉ typy lokรกtorลฏ:
| Vyhledรกvaฤe XPath | Najdฤte rลฏznรฉ prvky na webovรฉ strรกnce |
|---|---|
| ID | Chcete-li najรญt prvek podle ID prvku |
| Jmรฉno tลรญdy | Chcete-li najรญt prvek podle nรกzvu tลรญdy prvku |
| Jmรฉno | Vyhledรกnรญ prvku podle nรกzvu prvku |
| Text odkazu | Vyhledรกnรญ prvku podle textu odkazu |
| XPath | XPath vyลพadovanรก pro nalezenรญ dynamickรฉho prvku a prochรกzenรญ mezi rลฏznรฝmi prvky webovรฉ strรกnky |
| Cesta CSS | Cesta CSS takรฉ vyhledรก prvky, kterรฉ nemajรญ nรกzev, tลรญdu nebo ID. |
Typy X-cesty
Existujรญ dva typy XPath:
1) Absolutnรญ XPath
2) Relativnรญ XPath
Absolutnรญ XPath
Je to pลรญmรก cesta k nalezenรญ prvku, ale nevรฝhodou absolutnรญ XPath je, ลพe pokud dojde k nฤjakรฝm zmฤnรกm v cestฤ prvku, XPath selลพe.
Klรญฤovou vlastnostรญ XPath je, ลพe zaฤรญnรก jednรญm lomรญtkem (/), coลพ znamenรก, ลพe mลฏลพete vybrat prvek z koลenovรฉho uzlu.
Nรญลพe je uveden pลรญklad absolutnรญho vรฝrazu Xpath prvku zobrazenรฉho na obrazovce nรญลพe.
POZNรMKA: Na tomto si mลฏลพete procviฤit nรกsledujรญcรญ cviฤenรญ XPath https://demo.guru99.com/test/selenium-xpath.html
kliknฤte zde pokud video nenรญ pลรญstupnรฉ
Absolutnรญ 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]
Relativnรญ Xpath
Relativnรญ Xpath zaฤรญnรก uprostลed struktury HTML DOM. Zaฤรญnรก dvojitรฝm lomรญtkem (//). Dokรกลพe vyhledรกvat prvky kdekoli na webovรฉ strรกnce, nenรญ tลeba psรกt dlouhou cestu xpath a mลฏลพete zaฤรญt od stลedu struktury HTML DOM. Relativnรญ Xpath je vลพdy preferovรกna, protoลพe to nenรญ รบplnรก cesta z koลenovรฉho prvku.
Nรญลพe je uveden pลรญklad relativnรญho vรฝrazu XPath stejnรฉho prvku zobrazenรฉho na obrazovce nรญลพe. Toto je bฤลพnรฝ formรกt pouลพรญvanรฝ k nalezenรญ prvku XPath.
kliknฤte zde pokud video nenรญ pลรญstupnรฉ
Relative XPath: //div[@class='featured-box cloumnsize1']//h4[1]//b[1]
Co jsou osy XPath?
Osy XPath prohledรกvajรญ rลฏznรฉ uzly v dokumentu XML z aktuรกlnรญho kontextovรฉho uzlu. XPath osy jsou metody pouลพรญvanรฉ k nalezenรญ dynamickรฝch prvkลฏ, kterรฉ jinak nejsou moลพnรฉ bฤลพnou metodou XPath bez ID, nรกzvu tลรญdy, nรกzvu atd. XPath v Selenium zahrnuje nฤkolik metod, jako jsou Obsahuje, AND, Absolutnรญ XPath a Relativnรญ XPath k identifikaci a lokalizaci dynamickรฝch prvkลฏ na zรกkladฤ rลฏznรฝch atributลฏ a podmรญnek.
Metody os se pouลพรญvajรญ k nalezenรญ tฤch prvkลฏ, kterรฉ se dynamicky mฤnรญ pลi obnovฤ nebo jakรฉkoli jinรฉ operaci. Existuje nฤkolik bฤลพnฤ pouลพรญvanรฝch osovรฝch metod Selenium Webdriver jako dรญtฤ, rodiฤ, pลedek, sourozenec, pลedchozรญ, jรก atd.
Jak zapsat Dynamic XPath In Selenium webovรฝ ovladaฤ
1) Zรกkladnรญ XPath
XPath vรฝraz vyberte uzly nebo seznam uzlลฏ na zรกkladฤ atributลฏ jako ID, jmรฉno, nรกzev tลรญdyatd. z dokumentu XML, jak je znรกzornฤno nรญลพe.
Xpath=//input[@name='uid']
Zde je odkaz pro pลรญstup na strรกnku https://demo.guru99.com/test/selenium-xpath.html
Nฤkterรฉ dalลกรญ zรกkladnรญ xpath vรฝrazy:
Xpath=//input[@type='text'] Xpath=//label[@id='message23'] Xpath=//input[@value='RESET'] Xpath=//*[@class='barone'] Xpath=//a[@href='https://demo.guru99.com/'] Xpath=//img[@src='//guru99.com/images/home/java.png']
2) Obsahuje()
Contains() je metoda pouลพรญvanรก ve vรฝrazu XPath. Pouลพรญvรก se, kdyลพ se hodnota libovolnรฉho atributu dynamicky mฤnรญ, napลรญklad pลihlaลกovacรญ รบdaje.
Funkce obsahovat mรก schopnost najรญt prvek s ฤรกsteฤnรฝm textem, jak je znรกzornฤno v pลรญkladu XPath nรญลพe.
V tomto pลรญkladu jsme se pokusili identifikovat prvek pouze pomocรญ ฤรกsteฤnรฉ textovรฉ hodnoty atributu. V nรญลพe uvedenรฉm vรฝrazu XPath se namรญsto tlaฤรญtka Odeslat pouลพije ฤรกsteฤnรก hodnota 'sub'. Lze pozorovat, ลพe prvek je รบspฤลกnฤ nalezen.
รplnรก hodnota 'Type' je 'submit', ale pouลพรญvรก se pouze ฤรกsteฤnรก hodnota 'sub'.
Xpath=//*[contains(@type,'sub')]
รplnรก hodnota 'name' je 'btnLogin', ale pouลพรญvรก se pouze ฤรกsteฤnรก hodnota 'btn'.
Xpath=//*[contains(@name,'btn')]
Ve vรฝลกe uvedenรฉm vรฝrazu jsme vzali 'name' jako atribut a 'btn' jako ฤรกsteฤnou hodnotu, jak je znรกzornฤno na nรญลพe uvedenรฉm snรญmku obrazovky. Tรญm se najdou 2 prvky (LOGIN & RESET), protoลพe jejich atribut 'name' zaฤรญnรก na 'btn'.
Podobnฤ jsme v nรญลพe uvedenรฉm vรฝrazu vzali 'id' jako atribut a 'message' jako ฤรกsteฤnou hodnotu. Tรญm se najdou 2 prvky ('ID uลพivatele nesmรญ bรฝt prรกzdnรฉ' & 'Heslo nesmรญ bรฝt prรกzdnรฉ'), protoลพe jeho atribut 'id' zaฤรญnรก na 'zprรกva'.
Xpath=//*[contains(@id,'message')]
V nรญลพe uvedenรฉm vรฝrazu jsme vzali โtextโ odkazu jako atribut a โzdeโ jako ฤรกsteฤnou hodnotu, jak je znรกzornฤno na nรญลพe uvedenรฉm snรญmku obrazovky. Tรญm se najde odkaz (โzdeโ), protoลพe se zobrazรญ text โzdeโ.
Xpath=//*[contains(text(),'here')]
Xpath=//*[contains(@href,'guru99.com')]
3) Pomocรญ OR & AND
Ve vรฝrazu OR se pouลพรญvajรญ dvฤ podmรญnky, zda mรก bรฝt pravdivรก 1. podmรญnka NEBO 2. podmรญnka. Platรญ takรฉ, pokud je splnฤna nฤkterรก z podmรญnek nebo moลพnรก obฤ. Znamenรก to, ลพe pro nalezenรญ prvku by mฤla bรฝt splnฤna jakรกkoli podmรญnka.
V nรญลพe uvedenรฉm vรฝrazu XPath identifikuje prvky, jejichลพ jedna nebo obฤ podmรญnky jsou pravdivรฉ.
Xpath=//*[@type='submit' or @name='btnReset']
Zvรฝraznฤnรญ obou prvkลฏ jako prvku โLOGINโ s atributem โtypeโ a prvku โRESETโ s atributem โnameโ.
Ve vรฝrazu AND se pouลพรญvajรญ dvฤ podmรญnky, obฤ podmรญnky by mฤly bรฝt pravdivรฉ, aby se prvek naลกel. Pokud je nฤkterรก podmรญnka nepravdivรก, nepodaลรญ se najรญt prvek.
Xpath=//input[@type='submit' and @name='btnLogin']
V nรญลพe uvedenรฉm vรฝrazu zvรฝraznฤnรญ prvku 'LOGIN', protoลพe mรก atribut 'type' i 'name'.
4) Xpath zaฤรญnรก-s
XPath zaฤรญnรก-s() je funkce slouลพรญcรญ k vyhledรกnรญ webovรฉho prvku, jehoลพ hodnota atributu se zmฤnรญ pลi obnovenรญ nebo jinรฝmi dynamickรฝmi operacemi na webovรฉ strรกnce. V tรฉto metodฤ se porovnรกvรก poฤรกteฤnรญ text atributu, aby se naลกel prvek, jehoลพ hodnota atributu se dynamicky mฤnรญ. Mลฏลพete takรฉ najรญt prvky, jejichลพ hodnota atributu je statickรก (nemฤnรญ se).
Napลรญklad -: Pลedpoklรกdejme, ลพe ID konkrรฉtnรญho prvku se dynamicky mฤnรญ jako:
Id=โ zprรกva12โณ
Id=โ zprรกva345โณ
Id=โ zprรกva8769โณ
a tak dรกle.. ale poฤรกteฤnรญ text je stejnรฝ. V tomto pลรญpadฤ pouลพijeme vรฝraz Start-with.
V nรญลพe uvedenรฉm vรฝrazu jsou dva prvky, jejichลพ ID zaฤรญnรก โzprรกvouโ (tj. โID uลพivatele nesmรญ bรฝt prรกzdnรฉโ a โHeslo nesmรญ bรฝt prรกzdnรฉโ). V nรญลพe uvedenรฉm pลรญkladu XPath najde ty prvky, jejichลพ 'ID' zaฤรญnรก 'zprรกvou'.
Xpath=//label[starts-with(@id,'message')]
5) Funkce XPath Text().
Jedno Funkce XPath text(). je vestavฤnรก funkce selenovรฉho webdriveru, kterรก se pouลพรญvรก k vyhledรกnรญ prvkลฏ na zรกkladฤ textu webovรฉho prvku. Pomรกhรก najรญt pลesnรฉ textovรฉ prvky a lokalizuje prvky v sadฤ textovรฝch uzlลฏ. Prvky, kterรฉ majรญ bรฝt umรญstฤny, by mฤly bรฝt ve tvaru ลetฤzce.
V tomto vรฝrazu s textovou funkcรญ najdeme prvek s pลesnou shodou textu, jak je znรกzornฤno nรญลพe. V naลกem pลรญpadฤ najdeme prvek s textem โUserIDโ.
Xpath=//td[text()='UserID']
Metody os XPath
Tyto metody os XPath se pouลพรญvajรญ k nalezenรญ komplexnรญch nebo dynamickรฝch prvkลฏ. Nรญลพe uvidรญme nฤkterรฉ z tฤchto metod.
Pro ilustraci tฤchto metod os XPath pouลพijeme GuruDemo web banky 99.
1) Sledovรกnรญ
Vybere vลกechny prvky v dokumentu aktuรกlnรญho uzlu ( ) [ Vstupnรญ pole ID uลพivatele je aktuรกlnรญ uzel], jak je znรกzornฤno na obrazovce nรญลพe.
Xpath=//*[@type='text']//following::input
Existujรญ 3 โvstupnรญโ uzly, kterรฉ se shodujรญ pomocรญ โnรกsledujรญcรญโ osy โ hesla, pลihlaลกovacรญho a resetovacรญho tlaฤรญtka. Pokud se chcete zamฤลit na jakรฝkoli konkrรฉtnรญ prvek, mลฏลพete pouลพรญt nรญลพe uvedenou metodu XPath:
Xpath=//*[@type='text']//following::input[1]
XPath mลฏลพete zmฤnit podle poลพadavku zadรกnรญm [1],[2]โฆโฆโฆโฆa tak dรกle.
Se vstupem โ1โ najde snรญmek obrazovky nรญลพe konkrรฉtnรญ uzel, kterรฝ je prvkem vstupnรญho pole โHesloโ.
2) Pลedek
Osa pลedka vybere vลกechny prvky pลedkลฏ (prarodiฤ, rodiฤ atd.) aktuรกlnรญho uzlu, jak je znรกzornฤno na obrazovce nรญลพe.
V nรญลพe uvedenรฉm vรฝrazu nachรกzรญme prvek pลedkลฏ aktuรกlnรญho uzlu (uzel โPODNIKOVร TESTOVรNรโ).
Xpath=//*[text()='Enterprise Testing']//ancestor::div
Existuje 13 uzlลฏ โdivโ odpovรญdajรญcรญch pomocรญ osy โpลedchลฏdceโ. Pokud se chcete zamฤลit na jakรฝkoli konkrรฉtnรญ prvek, mลฏลพete pouลพรญt nรญลพe uvedenou cestu XPath, kde zmฤnรญte ฤรญslo 1, 2 podle svรฉho poลพadavku:
Xpath=//*[text()='Enterprise Testing']//ancestor::div[1]
XPath mลฏลพete zmฤnit podle poลพadavku zadรกnรญm [1], [2]โฆโฆโฆโฆa tak dรกle.
3) Dรญtฤ
Vybere vลกechny podลรญzenรฉ prvky aktuรกlnรญho uzlu (Java), jak je znรกzornฤno na obrazovce nรญลพe.
Xpath=//*[@id='java_technologies']//child::li
Existuje 71 โliโ uzlลฏ odpovรญdajรญcรญch pomocรญ โchildโ osy. Pokud se chcete zamฤลit na jakรฝkoli konkrรฉtnรญ prvek, mลฏลพete pouลพรญt nรญลพe uvedenou cestu xpath:
Xpath=//*[@id='java_technologies']//child::li[1]
Xpath mลฏลพete zmฤnit podle poลพadavku zadรกnรญm [1],[2]โฆโฆโฆโฆa tak dรกle.
4) Pลedchozรญ
Vyberte vลกechny uzly, kterรฉ jsou pลed aktuรกlnรญm uzlem, jak je znรกzornฤno na obrazovce nรญลพe.
V nรญลพe uvedenรฉm vรฝrazu identifikuje vลกechny vstupnรญ prvky pลed tlaฤรญtkem โLOGINโ, tj Uลพivatelskรฉ ID a heslo vstupnรญ prvek.
Xpath=//*[@type='submit']//preceding::input
Existujรญ 2 โvstupnรญโ uzly odpovรญdajรญcรญ pomocรญ โpลedchozรญโ osy. Pokud se chcete zamฤลit na jakรฝkoli konkrรฉtnรญ prvek, mลฏลพete pouลพรญt nรญลพe uvedenou cestu XPath:
Xpath=//*[@type='submit']//preceding::input[1]
Xpath mลฏลพete zmฤnit podle poลพadavku zadรกnรญm [1],[2]โฆโฆโฆโฆa tak dรกle.
5) Nรกslednรฝ sourozenec
Vyberte nรกsledujรญcรญ sourozence kontextovรฉho uzlu. Sourozenci jsou na stejnรฉ รบrovni aktuรกlnรญho uzlu, jak je znรกzornฤno na obrazovce nรญลพe. Najde prvek za aktuรกlnรญm uzlem.
xpath=//*[@type='submit']//following-sibling::input
Jeden vstupnรญ uzel se shoduje pomocรญ osy โnรกsledujรญcรญ sourozenecโ.
6) Rodiฤ
Vybere rodiฤe aktuรกlnรญho uzlu, jak je znรกzornฤno na obrazovce nรญลพe.
Xpath=//*[@id='rt-feature']//parent::div
Existuje 65 โdivโ uzlลฏ odpovรญdajรญcรญch pomocรญ โrodiฤovskรฉโ osy. Pokud se chcete zamฤลit na jakรฝkoli konkrรฉtnรญ prvek, mลฏลพete pouลพรญt nรญลพe uvedenou cestu XPath:
Xpath=//*[@id='rt-feature']//parent::div[1]
XPath mลฏลพete zmฤnit podle poลพadavku zadรกnรญm [1],[2]โฆโฆโฆโฆa tak dรกle.
7) Sebe
Vybรญrรก aktuรกlnรญ uzel nebo 'self' znamenรก, ลพe oznaฤuje samotnรฝ uzel, jak je znรกzornฤno na obrazovce nรญลพe.
Shoda jednoho uzlu pomocรญ osy โselfโ. Vลพdy najde pouze jeden uzel, protoลพe pลedstavuje sebeprvek.
Xpath =//*[@type='password']//self::input
8) Potomek
Vybere potomky aktuรกlnรญho uzlu, jak je znรกzornฤno na obrazovce nรญลพe.
V nรญลพe uvedenรฉm vรฝrazu identifikuje vลกechny potomky prvku aktuรกlnรญho prvku (prvek rรกmeฤku 'Hlavnรญ tฤlo obklopujรญcรญ'), coลพ znamenรก dole pod uzlem (podลรญzenรฝ uzel , vnukovรฝ uzel atd.).
Xpath=//*[@id='rt-feature']//descendant::a
Existuje 12 โspojovacรญchโ uzlลฏ odpovรญdajรญcรญch pomocรญ โpotomkovรฉโ osy. Pokud se chcete zamฤลit na jakรฝkoli konkrรฉtnรญ prvek, mลฏลพete pouลพรญt nรญลพe uvedenou cestu XPath:
Xpath=//*[@id='rt-feature']//descendant::a[1]
XPath mลฏลพete zmฤnit podle poลพadavku zadรกnรญm [1],[2]โฆโฆโฆโฆa tak dรกle.
Nejฤastฤjลกรญ dotazy
Shrnutรญ
XPath je vyลพadovรกn k nalezenรญ prvku na webovรฉ strรกnce a provedenรญ operace s tรญmto konkrรฉtnรญm prvkem.
- Existujรญ dva typy selenovรฝch XPath:
- Absolutnรญ XPath
- Relativnรญ XPath
- XPath Axes jsou metody pouลพรญvanรฉ k nalezenรญ dynamickรฝch prvkลฏ, kterรฉ jinak nelze najรญt bฤลพnou metodou XPath
- Vรฝraz XPath vyberte uzly nebo seznam uzlลฏ na zรกkladฤ atributลฏ jako ID , Nรกzev, Nรกzev tลรญdy atd. z dokumentu XML .
Zkontrolujte takรฉ: - Selenium Vรฝukovรฝ program pro zaฤรกteฤnรญky: Nauฤte se WebDriver za 7 dnรญ
















