handling web tables frames
V posledním tutoriálu Selenium WebDriver jsme se naučili různé běžně a běžně používané příkazy selenu WebDriver včetně důležitých témat, jako je zpracování iframe a výjimek v selenových skriptech.
Posun vpřed v naší komplexní série tutoriálů o selenu , v tomto tutoriálu bychom diskutovali o zpracování webových tabulek, iframe a dynamických prvků které jsou podstatnou součástí každého webového projektu.
Tento výukový program se skládá ze 3 různých témat a jejich mechanismů manipulace ve skriptu selenu.
- Webové tabulky / tabulky HTML
- Rámečky
- Dynamické prvky
Co se naučíte:
# 1) Webové tabulky / HTML tabulky
V tomto modulu se dozvíme o webových tabulkách nebo tabulkách HTML na webové stránce, o značkách dostupných v HTML a o tom, jak dynamicky zacházet s webovými tabulkami.
Webové tabulky jsou v zásadě skupina prvků, které jsou logicky uloženy ve formátu řádků a sloupců. Používá se k uspořádání podobných informací na webové stránce.
Níže je uveden příklad Html tabulky:
Níže je uveden fragment struktury HTML tabulky HTML:
Níže uvedené značky jsou obecně definovány v html tabulkách:
Značka „notable“ definuje tabulku HTML.
2. značka notbody definuje kontejner pro řádky a sloupce.
3.'tr 'definuje řádky v tabulce HTML.
4. ‚td ‘/‘ th ‘definuje sloupec tabulky HTML.
Najděte podrobnosti o webové tabulce:
Existuje mnoho způsobů, jak můžeme zpracovat webovou tabulku.
jak udělat soubory .jar otevřené pomocí Java
Přístup č. 1 :
Níže je xpath jedné z buněk v html tabulce. Řekněme „křestní jméno“
// div (@ id = ‘main’) / table (1) / tbody / tr (1) / th (1)
tr (1) definuje první řádek a th (1) definuje první sloupec.
Pokud je počet řádků a sloupců vždy konstantní, řekněme, že naše tabulka HTML bude mít vždy 5 řádků a 3 sloupce.
for(int numberOfRows=1; numberOfRows<=5; numberOfRows++) { for(int numberOfCol=1; numberOfCol <=3; numberOfCol++) { System.out.println(driver.findElement(By.xpath (“//div(@id='main')/table(1)/tbody/tr (“+numberOfRows+”)/th(“+numberOfCol+”)”))); } }
Kromě čísla řádku a sloupce zůstává každá součást XPath stejná. Můžete tedy iterovat pomocí smyčky „for“ pro každý řádek a sloupec, jak je uvedeno výše.
Přístup č. 2 :
První přístup je nejvhodnější pro stůl, který nemění své rozměry a vždy zůstává stejný. Výše uvedený přístup nebude dokonalým řešením pro dynamicky se měnící webové tabulky.
Vezměme si jako příklad výše uvedenou tabulku HTML:
WebElement htmltable=driver.findElement(By.xpath('//*(@id='main')/table(1)/tbody')); List rows=htmltable.findElements(By.tagName('tr')); for(int rnum=0;rnum Krok 1 : Nejprve získejte celou tabulku HTML a uložte ji do proměnné „htmltable“ webového prvku typu.
Krok 2 : Získejte všechny řádky s názvem značky „tr“ a uložte všechny prvky do seznamu webových prvků. Nyní jsou všechny prvky se značkou „tr“ uloženy v seznamu „řádků“.
Krok 3 : Procházejte každý řádek a získejte seznam prvků se značkou ‚Th '. „Rows.get (0)“ dá první řádek a „FindElements (By.tagName ( „Th“ )) ' zobrazí seznam sloupců pro řádek.
Krok 4 : Iterovat pomocí „Columns.getsize ()“ a získejte podrobnosti o každé buňce.
Poznámka : Výše uvedený přístup bude nejvhodnější, pokud se rozměry tabulky dynamicky změní.
Tím se uzavírá téma, jak zacházet s webovými tabulkami v selenu. Dále se naučíme manipulaci s prvkem uvnitř rámu.
# 2) Rámečky
V této části se dozvíme o rámcích na webové stránce a o tom, jak rámy identifikovat. Také zjistíme, jak můžeme zpracovat rám v Selenium WebDriver.
Mnoho vývojářů rád umisťuje prvky do rámečku. Rámec je jako kontejner, kde lze seskupit několik prvků.
Identifikace rámu:
Různé způsoby, jak zjistit, zda je prvek přítomen uvnitř rámečku nebo ne
# 1 . Klepněte pravým tlačítkem na prvek. Zkontrolujte, zda je k dispozici možnost „Tento rámeček“. Pokud je k dispozici tato možnost rámečku, znamená to, že prvek je uvnitř rámečku.
#dva . Zobrazte zdroj stránky webové stránky a zkontrolujte, zda je pro „iframe“ k dispozici nějaká značka.
selen otázky k pohovoru na 8 let zkušeností

Ověřte počet rámců na webové stránce :
Všechny rámečky mají název značky jako „iframe“.
Seznam frameList = driver.findElements (By.tagName ( 'Iframe' ));
System.out.println (frameList.size ());
Ve výše uvedeném příkladu : frameList bude mít celý seznam snímků a frameList.size () dá počet snímků.
Manipulace s prvkem uvnitř rámu:
Pokud je prvek uvnitř rámu, musí se ovládací prvek nejprve přepnout na rám a poté začít pracovat na prvcích.
Krok 1 : Přepnutí uvnitř rámečku:
driver.switchTo (). frame (1); // předat číslo snímku jako parametr.
nebo
driver.switchTo (). rám („název rámce“); // předat název rámce jako parametr.
nebo
driver.switchTo (). frame („xpath of the frame“);
Krok 2 : Po přepnutí uvnitř rámu bude selen schopen pracovat s prvky.
driver.findElement ( // **********************************************);
driver.findElement ( // **********************************************
Zde jsme se naučili, jak zacházet s prvkem uvnitř rámu, a dále se budeme zabývat různými způsoby, jak zacházet s dynamickým prvkem.
# 3) Dynamické prvky
V této části se naučíme různé způsoby, jak zacházet s dynamickými prvky a konstruovat obecnou Xpath.
V několika scénářích se atributy prvků dynamicky mění. Může to být „id“, „jméno“ atd.
Příklad : řekněme „id“ pole uživatelského jména je „username_123“ a XPath bude
// * (@ id = ‘username_123 ′) ale při opětovném otevření stránky se pole „id“ pole „uživatelské jméno“ mohlo změnit a nová hodnota může být „uživatelské jméno_234“.
V tomto případě test selže, protože selen nemohl najít cestu XPath, kterou jste předali dříve, protože ID pole se změnilo na jinou hodnotu.
Existuje mnoho přístupů v závislosti na typu problému:
Typ problému 1: Pokud se část hodnoty atributu změní .
Příklad : Stejně jako ve výše uvedeném příkladu se hodnota id změní, ale několik polí zůstane konstantní.
„Username_123“ změněno na „username_234“, ale „username“ vždy zůstalo konstantní.
Xpath můžete sestrojit níže:
driver.findElement (By.xpath ( „// * (obsahuje (@ id,„ uživatelské jméno “)))“ )). sendKeys ( „Uživatelské jméno“ );
Řidič . findElement (By.xpath ( „// * (začíná-na (@ id,‚ uživatel ‘))“ )). sendKeys ( „Uživatelské jméno“ );
„Obsahuje“ je metoda java, která kontroluje, zda id obsahuje podřetězcové uživatelské jméno.
začíná s() zkontroluje, zda některý atribut začíná na „uživatel“.
nejlepší textový editor pro python mac
Typ problému 2: Pokud se celá hodnota atributu dynamicky mění.
Opět platí, že v tomto případě mohou existovat různé přístupy:
Například : pokud se ID pole „přihlášení“ dynamicky mění a neexistuje žádná konstantní hodnota k použití, obsahuje metodu.
Řešení : Použití sendKeys.
Selen poskytuje různé API pro použití funkčních kláves. Například klávesa tab, zadejte klávesy, F5 atd.
Krok 1 : Zadejte heslo
driver.findElement (By.id ( 'Heslo' )). sendKeys („heslo“));
Krok 2 : Pomocí klíčových funkcí přejděte k prvku.
driver.findElement (By.id ( 'Heslo' )). sendKeys (Keys. ENTER ));
nebo
driver.findElement (By.id ( 'Heslo' )). sendKeys (Keys. TAB ));
Závěr
Webové tabulky, rámce a dynamické prvky jsou nezbytnou součástí každého webového projektu. Pro zpracování webových tabulek a dynamických prvků je vždy žádoucí napsat efektivní kód.
Porozumění konstrukci obecného XPath, což je velmi užitečné při manipulaci s dynamickými prvky. V případě rámce musí váš skript přepnout rám a poté pracovat na prvku.
Další tutoriál č. 19 : V dalším selenovém výukovém programu se naučíme o typech výjimek a o tom, jak zacházet s výjimkami v jazyce Java v selenových skriptech.
Zašlete prosím své dotazy týkající se webových tabulek, rámců a zpracování dynamických prvků, pokud nějaké máte.
Doporučené čtení
- Jak najít prvky v prohlížečích Chrome a IE pro vytváření skriptů selenu - výuka selenu č. 7
- Použití třídy Select Selenium pro zpracování prvků rozevíracího seznamu na webové stránce - Selenium Tutorial # 13
- Selenium Locators: Identifikace webových prvků pomocí XPath v selenu (příklady)
- Jak používat selektor CSS k identifikaci webových prvků pro skripty selenu - výuka selenu č. 6
- Zkontrolujte viditelnost webových prvků pomocí různých typů Příkazy WebDriver - Selenium Tutorial # 14
- Cucumber Selenium Tutorial: Cucumber Java Selenium WebDriver Integration
- Integrace selenu s JMeter
- Manipulace s iFrames pomocí metody switchTo () selenu WebDriver