xpath functions dynamic xpath selenium
Tento výukový program vysvetľuje príklady použitia funkcií XPath pri identifikácii prvkov:
Pred automatizáciou ľubovoľnej webovej stránky je potrebné objekt správne identifikovať a až potom s ním môžeme vykonať akúkoľvek operáciu. Ako vieme, najjednoduchší spôsob identifikácie prvku je pomocou atribútov ako ID, meno, odkaz, trieda alebo akýkoľvek iný jedinečný atribút, ktorý je k dispozícii pre značku, na ktorej sa element nachádza.
To je možné iba vtedy, ak sú tieto atribúty prítomné a / alebo sú jedinečné, aby bol objekt správne identifikovaný.
=> Tu sa pozrite na príručku pre začiatočníkov selénu.
Čo sa dozviete:
Prehľad funkcií XPath
Poďme sa rozprávať o scenári, keď atribúty nie sú ľahko dostupné.
Vyhlásenie o probléme
Ako identifikujeme prvok, ak lokátory ako ID, meno, trieda, odkaz atď. Nie sú k dispozícii v značke prvku?
Toto je možné jasne pochopiť na uvedenom príklade:
Prihlásiť sa Twitter
Ako vidíte na snímke vyššie, k hlavičke „Prihlásiť sa na Twitter“ nie sú pripojené žiadne atribúty. To znamená, že na identifikáciu tohto prvku nemôžeme použiť žiadny z lokátorov, ako je ID, trieda, odkaz alebo meno.
predvolená brána nie je k dispozícii Windows 10 2019
Doplnok Firepath nástroja Firefox vytvoril nasledujúci XPath:
// * (@ id = ‘page-container‘) / div / div (1) / h1
Neodporúčame používať vyššie uvedený XPath ako štruktúru stránky alebo ID, pretože sa môže dynamicky meniť. Ak využijeme tento nestabilný XPath, možno budeme musieť XPath meniť častejšie, čo je časovo náročnejšie na údržbu. Toto je jeden prípad, keď nemôžeme použiť všeobecný výraz XPath s lokátormi ako id, class, name alebo link.
Riešenie
Identifikácia prvku pomocou funkcií XPath podľa textu
Pretože máme viditeľný text „Prihlásiť sa na Twitter“ k dispozícii, využili by sme nasledujúce možnosti Funkcie XPath na jednoznačnú identifikáciu prvku.
- contains () (Podľa textu)
- začína -s () (podľa textu)
- text ()
Funkcie XPath ako contains (), starts-with () a text () pri použití pomocou textu „Prihlásiť sa na Twitter“ by nám pomohli správne identifikovať prvok a s tým je možné vykonať ďalšie operácie.
# 1) Obsahuje () Metóda:
Syntax: Ak chcete vyhľadať webový prvok „Prihlásiť sa na Twitter“, použite ktorýkoľvek z nasledujúcich výrazov XPath, ktoré zahŕňajú metódu contains ().
Podľa textu
- // h1 (obsahuje (text (), ‘Prihlásiť sa do’)))
- // h1 (contains (text (), ‘in to Twitter‘))
Poznámka: 1 zodpovedajúci uzol označuje, že webový prvok bol úspešne identifikovaný.
Z vyššie uvedeného príkladu je zrejmé, že metóda contains () nepotrebuje na správnu identifikáciu prvku absolútny (úplný) text. Čiastočný text stačí na jeho správnu identifikáciu. Vybratý čiastočný text by však mal byť jedinečný. Užívateľ môže ľahko identifikovať prvok, aj keď sa zmení orientácia stránky pomocou metódy contains ().
Upozorňujeme, že aj keď použijete absolútny text „Prihlásiť sa na Twitter“ s metódou contains (), prvok by bol identifikovaný správne.
# 2) Metóda Začína na ():
Syntax: Ak chcete vyhľadať webový prvok „Prihlásiť sa na Twitter“ “, použite nasledujúce ukážky výrazov XPath, ktoré majú metódu start-with ().
Podľa textu
- // h1 (začína sa na (text (), ‘Prihlásiť sa’))
- // h1 (začína sa na (text (), ‘Prihlásiť sa do’))
Z vyššie uvedeného príkladu je zrejmé, že metóda XPath functions start-with () vyžaduje na jednoznačnú identifikáciu prvku aspoň prvé slovo („Log“) viditeľného textu. Funguje to aj na čiastočný text a zlyhá, ak nezahrnieme prvé slovo čiastočne viditeľného textu.
Upozorňujeme, že aj keď použijete absolútny text „Prihlásiť sa na Twitter“ metódou Start-with (), bude prvok identifikovaný správne.
Neplatná cesta XPath pre začiatky s (): // h1 (začína sa na (text (), ‘do Twitteru’)))
Poznámka: Žiadne zodpovedajúce uzly nenaznačujú, že webový prvok nebol identifikovaný.
# 3) Metóda Text ():
Syntax: Ak chcete vyhľadať webový prvok „Prihlásiť sa na Twitter“, použite nasledujúci výraz XPath, ktorý má metódu text ().
V tomto výraze používame absolútny text, ktorý je medzi začiatočnou značkou. Ak použijeme funkciu text () s čiastočným Xpath, ako to robíme v contains () a začína-s (), element by sme nenašli.
Neplatná cesta Xpath pre text ():
Identifikácia prvku pomocou funkcií XPath podľa atribútu
Funkcie XPath (obsahuje alebo začínajúce na) s atribútom používame, keď sú v značke kontajnera k dispozícii niektoré jednoznačne identifikované hodnoty atribútov. Atribúty sú prístupné pomocou symbolu „@“.
To sa dá s daným jasne pochopiť príklad:
Prihlásiť sa Google
# 1) Obsahuje () Metóda:
Syntax: Jedinečná identifikácia prvku tlačidla „Skúsim šťastie“ pomocou funkcie XPath obsahuje () pomocou atribútu.
i) Podľa atribútu hodnoty:
- // vstup (obsahuje (@ hodnota, ‘Pocit’)))
- // vstup (obsahuje (@ hodnota, ‘Lucky’))
Z vyššie uvedených obrázkov je zrejmé, že použitie hodnoty atribútu metódou „Feeling“ alebo „Lucky“ with contains () jedinečne identifikuje prvok. Je však dôležité poznamenať, že aj keď použijeme celý obsah atribútu Value, bude prvok správne identifikovaný.
ii) Atribút Meno:
//input(contains(@name=’btnI’))
Neplatný prípad funkcie XPath s atribútom:
Musíme byť veľmi opatrní pri výbere atribútu, ktorý sa má použiť pri metóde contains () a started-with (). Ak hodnota atribútu nie je jedinečná, prvok nebudeme môcť jednoznačne identifikovať.
Predpokladajme, že ak pri identifikácii tlačidla „Skúsim šťastie“ vezmeme atribút „typ“, XPath nebude fungovať.
2 zodpovedajúce uzly naznačujú, že prvok nebol správne identifikovaný. Tu nie je hodnota atribútu typu jedinečná.
# 2) Metóda Začína na ():
Metóda start-with () s atribútom je veľmi užitočná, keď musíme nájsť prvky, ktorých pôvodná časť atribútu zostáva pevná, zatiaľ čo sa neskoršia časť neustále mení. Tento prístup je veľmi užitočný, keď objekty dynamicky menia hodnotu svojich atribútov. To sa dá použiť aj vtedy, ak chceme zachytiť podobné druhy prvkov.
Ísť do Facebook prihlásenie
Skontrolujte prvé textové pole „Meno“ a druhé textové pole „Priezvisko“ formulára na prihlásenie.
Je identifikované prvé textové pole „Meno“.
Je identifikované druhé textové pole „Priezvisko“.
V oboch textových poliach, ktoré sú identifikované pre aplikáciu Sign up for Facebook, zostáva počiatočná časť atribútov id nezmenená.
Krstné meno id = “u_0_2”
Priezvisko id = ‘u_0_4”
Toto je scenár, v ktorom môžeme pomocou atribútu start-with () získať všetky prvky pod takýmto typom atribútu id. Upozorňujeme, že tieto dve polia berieme iba pre informáciu. Na obrazovke však môže byť viac polí s ID, ktoré začínajú „u_0_“.
Začína na () (Podľa ID atribútu)
//input(starts-with(@id,”u_0_”))
Dôležitá poznámka: Tu sme použili jednoduché úvodzovky. Jednoduché úvodzovky však budú fungovať aj pri metóde začínania.
11 zodpovedajúcich uzlov naznačuje, že tento XPath identifikoval všetky prvky, ktoré tieto identifikátory začínajú na „u_0_“. Posledná časť id (2 pre krstné meno, 4 pre priezvisko atď.) Určuje, ako jednoznačne identifikujeme prvok.
Atribút funkcie začína s môžeme použiť tam, kde potrebujeme zozbierať podobný typ prvkov v zozname, a dynamicky vybrať jeden z nich obídením argumentu v generickej metóde na jednoznačnú identifikáciu prvku.
Postupujte podľa nižšie uvedeného príkladu, aby ste využili funkciu rozbehu s našou výhodou.
Vzorový kód:
/* Generic Method */ public void xpathLoc(String identifier){ //The below step identifies the element “First Name” uniquely when the argument is “2” WebElement E1=d1.findElement(By.xpath('//input(starts-with(@id,”u_0_”+identifier ))')); E1.sendKeys(“Test1”); /* This step enters the value of First Name as “Test 1” */ } /* Main Method */ public static void main(String() args) { xpathLoc(“2”); --- This step calls the xpathLoc() method to identify the first name. }
Poznámka: Eclipse nemusí umožňovať použitie úvodzoviek. Možno budete musieť použiť iný kód, aby ste vytvorili dynamický XPath.
Vzorový kód slúži ako referencia. Môžete ho vylepšiť tak, aby vyhovoval všetkým prvkom a operáciám, ktoré chcete vykonať, a hodnotám, ktoré chcete zadať (v prípade textových polí), aby bol kód univerzálnejší.
Záver
V tomto článku je vysvetlené, ako môžeme na jedinečné identifikovanie prvkov v štruktúre DOM DOM použiť funkcie XPath contains (), starts-with () a text () s atribútmi a textom.
Ďalej uvádzame niekoľko pozorovaní, ktoré môžeme čerpať pre funkcie XPath:
- V prípade, že poznáte čiastočný konštantný viditeľný text alebo atribút, použite v XPath metódu „contains ()“.
- Ak poznáte počiatočnú čiastočnú konštantu viditeľného textu alebo atribútu, v XPath využite metódu „Start-With ()“.
- Môžete tiež použiť metódu contains () a starts-with () s absolútnym textom alebo atribútom.
- Ak viete o absolútne viditeľnom texte, použite v programe XPath metódu „text ()“.
- S čiastočným textom nemôžete použiť metódu text ().
- Metódu start-with () nemôžete použiť, ak sa počiatočný text nepoužíva v XPath alebo ak sa pôvodný text neustále mení.
V ďalšom tutoriáli sa naučíme, ako využiť osi XPath s funkciami XPath na ďalšie vylepšenie umiestnenia prvkov na dostupnej webovej stránke.
=> Prečítajte si sériu Easy Selenium Training Series.
Odporúčané čítanie
- Selénové lokátory: Identifikácia webových prvkov pomocou XPath v seléne (príklady)
- Zaobchádzanie s webovými tabuľkami, rámcami a dynamickými prvkami v selenovom skripte - selénský výukový program č. 18
- Funkcie reťazca Python
- Postprocesor Xpath Extractor v JMeter
- Sprievodca hľadaním prvkov selénom podľa výučby s príkladmi
- Výukový program Cucumber Selenium: Cucumber Java Selenium WebDriver Integration
- Komplexný výukový program XPath - Jazyk cesty XML
- Úvod do softvéru Selenium WebDriver - Výučba selénu č. 8