Jak zacházet s webovou tabulkou v Selenium webový ovladač
V čem je webová tabulka Selenium?
A Webová tabulka in Selenium je WebElement používaný pro tabulkovou reprezentaci dat nebo informací. Zobrazovaná data nebo informace mohou být statické nebo dynamické. Webová tabulka a její prvky jsou přístupné pomocí funkcí a lokátorů WebElement v Selenium. Typickým příkladem webové tabulky by byly specifikace produktu zobrazené na platformě elektronického obchodu.
Čtení HTML webové tabulky
Jsou chvíle, kdy potřebujeme přistupovat k prvkům (obvykle textům), které jsou v tabulkách HTML. Je však velmi zřídka, aby webový designér poskytl určité buňce v tabulce atribut id nebo name. Nemůžeme proto použít obvyklé metody jako „By.id()“, „By.name()“ nebo „By.cssSelector()“. V tomto případě je nejspolehlivější možností přistupovat k nim pomocí metody „By.xpath()“.
Jak zacházet s webovou tabulkou v Selenium
Zvažte níže uvedený HTML kód pro práci s webovými tabulkami Selenium.
Budeme používat XPath získat vnitřní text buňky obsahující text „čtvrtá buňka“.
Krok 1 – Nastavte nadřazený prvek (tabulku)
Lokátory XPath ve WebDriver vždy začínají dvojitým lomítkem „//“ a poté následuje nadřazený prvek. Vzhledem k tomu, že se zabýváme webovými tabulkami v Selenium, nadřazeným prvkem by měl být vždy štítek. První část našeho Selenium Lokátor tabulky XPath by proto měl začínat „//table“.
Krok 2 – Přidejte podřízené prvky
Prvek bezprostředně pod je takže to můžeme říct je „dítětem“. . A také, je „rodičem“. . Všechny podřízené prvky v XPath jsou umístěny napravo od jejich nadřazeného prvku, oddělené jedním lomítkem „/“, jako je kód zobrazený níže.
Krok 3 – Přidejte predikáty
The prvek obsahuje dva značky. Nyní můžeme říci, že tito dva značky jsou „děti“. . V důsledku toho to můžeme říci je rodičem obou Prvky.
Další věc, kterou můžeme uzavřít, je, že dva prvky jsou sourozenci. Sourozenci odkazují na podřízené prvky, které mají stejného rodiče.
Abyste se dostali k chceme získat přístup (ten s textem „čtvrtá buňka“), musíme nejprve získat přístup k druhý a ne první. Pokud jednoduše napíšeme „//table/tbody/tr“, budeme přistupovat k prvnímu štítek.
Jak se tedy dostaneme k druhému pak? Odpověď na to je použít Predikáty.
Predikáty jsou čísla nebo atributy HTML uzavřené v páru hranatých závorek „[ ]“, které odlišují podřízený prvek od jeho sourozenců.. Vzhledem k tomu, potřebujeme k přístupu je druhý, jako predikát použijeme „[2]“.
Pokud nepoužijeme žádný predikát, XPath přistoupí k prvnímu sourozenci. Proto můžeme přistupovat k prvnímu pomocí některého z těchto kódů XPath.
Krok 4 – Přidejte následující podřízené prvky pomocí příslušných predikátů
Další prvek, ke kterému potřebujeme přistupovat, je druhý . Aplikováním principů, které jsme se naučili v krocích 2 a 3, dokončíme náš kód XPath tak, aby byl jako ten, který je zobrazen níže.
Nyní, když máme správný lokátor XPath, již můžeme přistupovat k buňce, kterou jsme chtěli, a získat její vnitřní text pomocí kódu níže. Předpokládá se, že jste výše uvedený kód HTML uložili jako „newhtml.html“ na svůj disk C.
public static void main(String[] args) { String baseUrl = "http://demo.guru99.com/test/write-xpath-table.html"; WebDriver driver = new FirefoxDriver(); driver.get(baseUrl); String innerText = driver.findElement( By.xpath("//table/tbody/tr[2]/td[2]")).getText(); System.out.println(innerText); driver.quit(); } }
Přístup k vnořeným tabulkám
Stejné principy popsané výše platí pro vnořené tabulky. Vnořené tabulky jsou tabulky umístěné v jiné tabulce. Příklad je uveden níže.
Pro přístup k buňce s textem „4-5-6“ pomocí „//parent/child“ a konceptů predikátu z předchozí části bychom měli být schopni přijít s kódem XPath níže.
Níže uvedený kód WebDriver by měl být schopen načíst vnitřní text buňky, ke které přistupujeme.
public static void main(String[] args) { String baseUrl = "http://demo.guru99.com/test/accessing-nested-table.html"; WebDriver driver = new FirefoxDriver(); driver.get(baseUrl); String innerText = driver.findElement( By.xpath("//table/tbody/tr[2]/td[2]/table/tbody/tr/td[2]")).getText(); System.out.println(innerText); driver.quit(); }
Níže uvedený výstup potvrzuje, že vnitřní tabulka byla úspěšně zpřístupněna.
Použití atributů jako predikátů
Pokud je prvek zapsán hluboko v kódu HTML, takže je velmi obtížné určit číslo, které se má pro predikát použít, můžeme místo toho použít jedinečný atribut tohoto prvku.
V níže uvedeném příkladu je buňka „New York to Chicago“ umístěna hluboko do Mercury HTML kód domovské stránky prohlídky.
V tomto případě můžeme jako predikát použít jedinečný atribut tabulky (width=”270″). Atributy se používají jako predikáty tak, že se jim předpona symbolem @. Ve výše uvedeném příkladu je buňka „New York to Chicago“ umístěna v první ze čtvrtého , a tak by naše cesta XPath měla vypadat níže.
Pamatujte, že když vložíme kód XPath Java, měli bychom použít znak escape zpětné lomítko „\“ pro dvojité uvozovky na obou stranách „270“, aby argument řetězce By.xpath() nebyl předčasně ukončen.
Nyní jsme připraveni přistupovat k této buňce pomocí níže uvedeného kódu.
public static void main(String[] args) { String baseUrl = "http://demo.guru99.com/test/newtours/"; WebDriver driver = new FirefoxDriver(); driver.get(baseUrl); String innerText = driver.findElement(By .xpath("//table[@width=\"270\"]/tbody/tr[4]/td")) .getText(); System.out.println(innerText); driver.quit(); }
Zkratka: Pro přístup k tabulkám v použijte Zkontrolovat prvek Selenium
Pokud je extrémně obtížné nebo nemožné získat číslo nebo atribut prvku, nejrychlejší způsob, jak vygenerovat kód XPath, je použít Inspect Element.
Zvažte níže uvedený příklad z Mercury Domovská stránka prohlídek.
Krok 1
K získání kódu XPath použijte Firebug.
Krok 2
Vyhledejte první nadřazený prvek „tabulka“ a odstraňte vše nalevo od něj.
Krok 3
Před zbývající část kódu uveďte dvojité lomítko „//“ a zkopírujte jej do kódu WebDriver.
Níže uvedený kód WebDriver bude schopen úspěšně načíst vnitřní text prvku, ke kterému přistupujeme.
public static void main(String[] args) { String baseUrl = "http://demo.guru99.com/test/newtours/"; WebDriver driver = new FirefoxDriver(); driver.get(baseUrl); String innerText = driver.findElement(By .xpath("//table/tbody/tr/td[2]" + "//table/tbody/tr[4]/td/" + "table/tbody/tr/td[2]/" + "table/tbody/tr[2]/td[1]/" + "table[2]/tbody/tr[3]/td[2]/font")) .getText(); System.out.println(innerText); driver.quit(); }
Shrnutí
- By.xpath() se běžně používá pro přístup k prvkům WebTable v Selenium.
- Pokud je prvek zapsán hluboko v kódu HTML, takže je velmi obtížné určit číslo, které se má použít pro predikát, můžeme místo něj použít jedinečný atribut tohoto prvku pro Selenium získat prvek tabulky.
- Atributy se používají jako predikáty tak, že se jim předpona symbolem @.
- Pro přístup k WebTable použijte Inspect Element Selenium