xpath functions dynamic xpath selenium
Tento výukový program vysvětluje použití funkcí XPath při identifikaci prvků pomocí příkladů:
Před automatizací jakékoli webové stránky je nutné správně identifikovat objekt, než budeme moci provést jakoukoli operaci na stejné stránce. Jak víme, nejjednodušší způsob, jak identifikovat prvek, je pomocí atributů, jako je ID, Název, Odkaz, Třída nebo jakýkoli jiný jedinečný atribut, který je k dispozici u značky, kde se prvek nachází.
To je možné pouze v případě, že jsou tyto atributy k dispozici a / nebo jsou jedinečné, aby byl objekt správně identifikován.
=> Prohlédněte si průvodce pro začátečníky selenem zde.
Co se naučíte:
Přehled funkcí XPath
Pojďme diskutovat o scénáři, kdy atributy nejsou snadno dostupné.
Problémové prohlášení
Jak identifikujeme prvek, pokud ve značce prvku nejsou k dispozici lokátory jako ID, Název, Třída, Odkaz atd.?
To lze jasně pochopit na uvedeném příkladu:
Přihlásit se do Cvrlikání
Jak vidíte na výše uvedeném snímku obrazovky, záhlaví „Přihlásit se na Twitter“ nemá k němu připojené žádné atributy. To znamená, že k identifikaci tohoto prvku nemůžeme použít žádný z lokátorů, jako je ID, Class, Link nebo Name.
nejlepší program pro vytváření vývojových diagramů
Plugin Firepath nástroje Firefox vygeneroval níže uvedený XPath:
// * (@ id = ‘page-container‘) / div / div (1) / h1
Nedoporučujeme používat výše uvedený XPath jako strukturu stránky nebo ID, protože se může dynamicky měnit. Pokud tento nestabilní XPath využijeme, možná budeme muset XPath měnit častěji, což je časově náročnější na údržbu. Toto je jeden případ, kdy nemůžeme použít obecný výraz XPath s lokátory jako id, class, name nebo link.
Řešení
Identifikace prvku pomocí funkcí XPath podle textu
Protože máme viditelný text „Přihlásit se na Twitter“ k dispozici, využili bychom následující Funkce XPath k jedinečné identifikaci prvku.
- contains () (Podle textu)
- začíná-od () (podle textu)
- text()
Funkce XPath jako contains (), starts-with () a text () při použití pomocí textu „Přihlásit se na Twitter“ nám pomohou správně identifikovat prvek a lze s ním provádět další operace.
# 1) Obsahuje () Metoda:
Syntax: Chcete-li vyhledat webový prvek „Přihlásit se na Twitter“, použijte některý z následujících výrazů XPath, které zahrnují metodu contains ().
Podle textu
- // h1 (contains (text (), ‘Log in to)))
- // h1 (contains (text (), ‘in to Twitter‘))
Poznámka: 1 odpovídající uzel označuje, že webový prvek byl úspěšně identifikován.
Z výše uvedeného příkladu je zřejmé, že metoda contains () nepotřebuje absolutní (plný) text ke správné identifikaci prvku. Částečný text stačí k jeho správné identifikaci. Vybraný částečný text by však měl být jedinečný. Uživatel může prvek snadno identifikovat, i když se změní orientace stránky pomocí metody contains ().
Vezměte prosím na vědomí, že i když použijete absolutní text „Přihlásit se na Twitter“ s metodou contains (), prvek bude identifikován správně.
# 2) Začíná metodou ():
Syntax: Chcete-li najít webový prvek „Přihlásit se na Twitter“, použijte následující ukázkové výrazy XPath, které mají metodu počínaje ().
Podle textu
- // h1 (začíná-na (text (), ‚Přihlásit se‘))
- // h1 (začíná-na (text (),, Přihlásit se do '))
Z výše uvedeného příkladu je zřejmé, že metoda XPath functions start-with () vyžaduje pro jednoznačnou identifikaci prvku alespoň první slovo („Log“) viditelného textu. Funguje také na částečný text a selže, pokud nezadáme první slovo částečně viditelného textu.
Vezměte prosím na vědomí, že i když použijete absolutní text „Přihlaste se na Twitter“ s metodou začíná s (), bude prvek identifikován správně.
Neplatná cesta XPath pro začátek (): // h1 (začíná-na (text (), ‚in na Twitter‘))
Poznámka: Žádné odpovídající uzly nenaznačují, že webový prvek nebyl identifikován.
# 3) Metoda Text ():
Syntax: Chcete-li vyhledat webový prvek „Přihlásit se na Twitter“, použijte následující výraz XPath, který má metodu text ().
V tomto výrazu použijeme absolutní text, který je mezi počáteční značkou. Pokud použijeme funkci text () s částečným Xpath, jako to děláme v contains () a začíná-s (), nebyli bychom schopni prvek najít.
Neplatná cesta Xpath pro text ():
Identifikace prvku pomocí funkcí XPath podle atributu
Používáme funkce XPath (obsahuje nebo začíná) s atributem, když jsou ve značce kontejneru k dispozici některé jednoznačně identifikované hodnoty atributů. Atributy jsou přístupné pomocí symbolu „@“.
To lze jasně pochopit s daným příklad:
Přihlásit se do Google
# 1) Obsahuje () Metoda:
Syntax: Jedinečná identifikace prvku tlačítka „I’m Feeling Lucky“ pomocí funkce XPath obsahuje () pomocí atributu.
(i) Podle atributu hodnoty:
- // input (contains (@ value, ‘Feeling’))
- // vstup (obsahuje (@ hodnota, ‚Lucky‘))
Z výše uvedených obrázků je zřejmé, že použití hodnoty atributu metodou „Feeling“ nebo „Lucky“ with contains () jedinečně identifikuje prvek. Je však důležité si uvědomit, že i když použijeme úplný obsah atributu Value, bude prvek správně identifikován.
ii) Atribut podle jména:
//input(contains(@name=’btnI’))
Neplatný případ funkce XPath s atributem:
Musíme být velmi opatrní při výběru atributu, který se má použít s metodou contains () a začíná-s (). Pokud hodnota atributu není jedinečná, prvek nebudeme moci jednoznačně identifikovat.
Předpokládejme, že když vezmeme atribut „type“ při identifikaci tlačítka „I Feeling Lucky“, XPath nebude fungovat.
2 odpovídající uzly označují, že prvek nebyl správně identifikován. Zde není hodnota atributu typu jedinečná.
# 2) Začíná metodou ():
Metoda start-with () s atributem je velmi užitečná, když musíme najít prvky, jejichž dřívější část atributu zůstává pevná, zatímco pozdější část se neustále mění. Tento přístup je velmi užitečný, když objekty dynamicky mění hodnotu svých atributů. To lze také použít, pokud chceme zachytit podobné druhy prvků.
Jít do Facebook přihlášení
Zkontrolujte první textové pole „Jméno“ a druhé textové pole „Příjmení“ formuláře pro přihlášení.
Je identifikováno první textové pole „Jméno“.
Je označeno druhé textové pole „Příjmení“.
V obou textových polích, která jsou identifikována pro Zaregistrovat se na Facebook, zůstává počáteční část atributů id beze změny.
Křestní jméno id = “u_0_2”
Příjmení id = „u_0_4“
Toto je scénář, kde můžeme použít atribut start-with () k získání všech prvků pod tímto typem atributu id. Vezměte prosím na vědomí, že tato dvě pole bereme pouze pro naši potřebu. Na obrazovce však může být více polí s ID, která začínají na „u_0_“.
Začíná na () (Podle atributu id)
//input(starts-with(@id,”u_0_”))
Důležitá poznámka: Zde jsme místo jednoduchých uvozovek použili uvozovky. Jednoduché uvozovky ale budou fungovat i s metodou začíná.
11 odpovídajících uzlů naznačuje, že tento XPath identifikoval všechny prvky, které tato ID začínají na „u_0_“. Druhá část id (2 pro křestní jméno, 4 pro příjmení atd.) Určuje, jak jednoznačně identifikujeme prvek.
Atribut začíná s funkcí můžeme použít tam, kde potřebujeme shromáždit podobný typ prvků v seznamu a dynamicky vybrat jeden z nich obejit argument v obecné metodě k jedinečné identifikaci prvku.
Postupujte podle níže uvedeného příkladu, abyste využili funkci Začínáme s naší výhodou.
Ukázkový 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 možná neumožňuje použití uvozovek. K vytvoření dynamického XPath se možná budete muset uchýlit k jinému kódu.
Ukázkový kód je uveden jako reference. Můžete jej vylepšit tak, aby se vešel do všech prvků a operací, které chcete provést, a hodnot, které chcete zadat (v případě textových polí), aby byl kód univerzálnější.
Závěr
Tento článek vysvětluje, jak můžeme použít XPath Functions contains (), začíná-s () a text () s atributem a textem k jedinečné identifikaci prvků ve struktuře HTML DOM.
Níže uvádíme některá z pozorování, která můžeme čerpat pro funkce XPath:
- Pokud znáte částečnou konstantní viditelný text nebo atribut, použijte v XPath metodu „contains ()“.
- Pokud znáte počáteční částečnou konstantu viditelného textu nebo atributu, použijte v XPath metodu „začíná s ()“.
- Můžete také použít metodu contains () a začíná s () s absolutním textem nebo atributem.
- Pokud víte o absolutně viditelném textu, použijte v XPath metodu „text ()“.
- U částečného textu nemůžete použít metodu text ().
- Metodu start-with () nemůžete použít, pokud se počáteční text nepoužívá v XPath nebo pokud se původní text neustále mění.
V dalším kurzu se naučíme, jak využít osy XPath s funkcemi XPath k dalšímu vylepšení umístění prvků na dostupné webové stránce.
=> Přečtěte si sérii Easy Selenium Training Series.
Doporučené čtení
- Selenium Locators: Identifikace webových prvků pomocí XPath v selenu (příklady)
- Manipulace s webovými tabulkami, rámy a dynamickými prvky v selenovém skriptu - Selenium Tutorial # 18
- Funkce řetězce Python
- Postprocesor Xpath Extractor v JMeteru
- Výukový program pro vyhledání prvku selen pomocí textu s příklady
- Cucumber Selenium Tutorial: Cucumber Java Selenium WebDriver Integration
- Komplexní výukový program XPath - jazyk XML
- Úvod do Selenium WebDriver - Selenium Tutorial # 8