Jak zacházet s webovou tabulkou v selenu WebDriver

Obsah:

Anonim

Čtení webové tabulky HTML

Jsou chvíle, kdy potřebujeme přistupovat k prvkům (obvykle textům), které jsou v HTML tabulkách. Pro webového designéra je však velmi zřídka poskytnout atribut id nebo name určité buňce v tabulce. Proto nemůžeme použít obvyklé metody jako „By.id ()“, „By.name ()“ nebo „By.cssSelector ()“. V tomto případě je nejspolehlivější možností získat k nim přístup pomocí metody „By.xpath ()“.

V tomto výukovém programu se naučíte-

  • Jak psát XPath pro tabulku
  • Přístup k vnořeným tabulkám
  • Použití atributů jako predikátů
  • Zkratka: Použijte prvek Inspect pro přístup k tabulkám v selenu

Jak psát XPath pro tabulku

Zvažte níže uvedený HTML kód.

Pomocí XPath získáme vnitřní text buňky obsahující text „čtvrtá buňka“.

Krok 1 - Nastavte nadřazený prvek (tabulka)

Lokátory XPath ve WebDriveru vždy začínají dvojitým lomítkem „//“ a poté následují nadřazeným prvkem . Jelikož máme co do činění s tabulkami, nadřazeným prvkem by vždy měla být značka

. První část našeho lokátoru XPath by proto měla začínat „// table“.

Krok 2 - Přidejte podřízené prvky

Prvek bezprostředně pod je

, takže můžeme říci, že 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 a jsou odděleny jedním lomítkem „/“, jako je kód zobrazený níže.

Krok 3 - Přidejte predikáty

Prvek

obsahuje dvě značky . Nyní můžeme říci, že tyto dvě značky jsou „potomky“ . V důsledku toho můžeme říci, že je rodičem obou prvků .

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 .

Abychom se dostali k

a ne k prvnímu. Pokud jednoduše napíšeme „// table / tbody / tr“, budeme přistupovat k první značce .

Jak tedy získáme přístup k druhému

? Odpovědí na toto je použití predikátů .

Predikáty jsou čísla nebo atributy HTML uzavřené v hranatých závorkách „[]“, které odlišují podřízený prvek od jeho sourozenců . Protože

, ke kterému potřebujeme získat přístup, je druhý, použijeme jako predikát „[2]“.

Pokud nepoužijeme žádný predikát, XPath získá přístup 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ším prvkem, ke kterému musíme přistupovat, je druhý

, a proto by naše XPath měla být tak, jak je uvedeno níže.

Pamatujte, že když vložíme kód XPath do Javy, měli bychom použít dvojité uvozovky na obou stranách čísla „270“ zpětné lomítko „\“, aby nebyl předčasně ukončen řetězcový argument By.xpath () .

Nyní jsme připraveni k přístupu k této buňce pomocí níže uvedeného kódu.

public static void main (String [] args) {Řetězec baseUrl = "http://demo.guru99.com/test/newtours/";Ovladač WebDriver = nový FirefoxDriver ();driver.get (baseUrl);Řetězec innerText = driver.findElement (od.xpath ("// tabulka [@width = \" 270 \ "] / tbody / tr [4] / td")).getText ();System.out.println (innerText);driver.quit ();}

Zkratka: Použijte prvek Inspect pro přístup k tabulkám v selenu

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 domovské stránky Mercury Tours.

Krok 1

Použijte Firebug k získání kódu XPath.

Krok 2

Vyhledejte první nadřazený prvek „tabulky“ a odstraňte vše nalevo od něj.

Krok 3

Před zbývající část kódu přidejte dvojité lomítko „//“ a zkopírujte jej do svého 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) {Řetězec baseUrl = "http://demo.guru99.com/test/newtours/";Ovladač WebDriver = nový FirefoxDriver ();driver.get (baseUrl);Řetězec innerText = driver.findElement (od.xpath ("// tabulka / tbody / tr / td [2]"+ "// tabulka / tbody / tr [4] / td /"+ "tabulka / tělo / tr / td [2] /"+ "tabulka / tbody / tr [2] / td [1] /"+ "tabulka [2] / tbody / tr [3] / td [2] / písmo")).getText ();System.out.println (innerText);driver.quit ();}

souhrn

  • By.xpath () se běžně používá pro přístup k prvkům tabulky.
  • Pokud je prvek napsá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 toho použít jedinečný atribut tohoto prvku.
  • Atributy se používají jako predikáty jejich předponou se symbolem @.
  • Použijte prvek Inspect pro přístup k tabulkám v selenu
, ke kterému si přejeme přístup (ten s textem „čtvrtá buňka“), musíme nejprve přistupovat k druhému
. Použitím principů, které jsme se naučili z kroků 2 a 3, dokončíme náš kód XPath tak, jak je uveden níže.

Nyní, když máme správný lokátor XPath, můžeme již přistupovat k buňce, kterou jsme chtěli, a získat její vnitřní text pomocí níže uvedeného kódu. Předpokládá, že jste výše uvedený kód HTML uložili na disk C jako „newhtml.html“.

public static void main (String [] args) {Řetězec baseUrl = "http://demo.guru99.com/test/write-xpath-table.html";Ovladač WebDriver = nový FirefoxDriver ();driver.get (baseUrl);Řetězec 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é zásady popsané výše platí pro vnořené tabulky. Vnořené tabulky jsou tabulky umístěné v jiné tabulce . Níže je uveden příklad.

Pro přístup k buňce s textem „4-5-6“ pomocí „// parent / child“ a predikátových konceptů z předchozí části bychom měli být schopni přijít s níže uvedeným XPath kódem.

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) {Řetězec baseUrl = "http://demo.guru99.com/test/accessing-nested-table.html";Ovladač WebDriver = nový FirefoxDriver ();driver.get (baseUrl);Řetězec innerText = driver.findElement (By.xpath ("// tabulka / tbody / tr [2] / td [2] / tabulka / tbody / tr / td [2]")). GetText ();System.out.println (innerText);driver.quit ();}

Výstup níže potvrzuje, že k vnitřní tabulce byl úspěšně přistupován.

Použití atributů jako predikátů

Pokud je prvek napsá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 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 HTML kódu domovské stránky Mercury Tours.

V tomto případě můžeme jako predikát použít jedinečný atribut tabulky (width = "270"). Atributy se používají jako predikáty jejich předponou se symbolem @ . Ve výše uvedeném příkladu je buňka „New York do Chicaga“ umístěna v první

čtvrté