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.

Jak zapsat XPath pro tabulku Selenium

Budeme používat XPath získat vnitřní text buňky obsahující text „čtvrtá buňka“.

Jak zapsat XPath pro tabulku Selenium

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“.

Selenium Příklad webové tabulky

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.

Selenium Příklad webové tabulky

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]“.

Selenium Příklad webové tabulky

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.

Selenium Webová tabulka pomocí 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.

Webová tabulka v Selenium pomocí Xpath

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.

Webová tabulka v Selenium pomocí Xpath

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();
	}
}

Webová tabulka v Selenium pomocí Xpath

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.

Jak získat přístup k vnořeným tabulkám v Selenium

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.

Jak získat přístup k vnořeným tabulkám v Selenium


Níže uvedený kód WebDriver by měl být schopen načíst vnitřní text buňky, ke které přistupujeme.

Přístup k vnořeným tabulkám v Selenium

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.

Přístup k vnořeným tabulkám v Selenium

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.

Selenium Příklad webové tabulky s použitím atributů jako predikátů

Selenium Příklad webové tabulky s použitím atributů jako predikátů

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.

Selenium Příklad webové tabulky s atributy jako predikáty

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.

Selenium Příklad webové tabulky s atributy jako predikáty

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

Selenium Příklad webové tabulky s atributy jako predikáty

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();
}

Selenium Příklad webové tabulky s atributy jako predikáty

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.

Selenium Příklad webové tabulky s atributy jako predikáty

Krok 1

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

Selenium Příklad webové tabulky s atributy jako predikáty

Krok 2

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

Selenium Příklad webové tabulky s atributy jako predikáty

Krok 3

Před zbývající část kódu uveďte dvojité lomítko „//“ a zkopírujte jej do kódu WebDriver.

Selenium Příklad webové tabulky s atributy

Níže uvedený kód WebDriver bude schopen úspěšně načíst vnitřní text prvku, ke kterému přistupujeme.

Selenium Příklad webové tabulky s atributy

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