Kako rukovati web tablicom u Selenium webdriver

U čemu je web tablica Selenium?

A Web tablica in Selenium je WebElement koji se koristi za tablični prikaz podataka ili informacija. Prikazani podaci ili informacije mogu biti statični ili dinamički. Web tablici i njezinim elementima može se pristupiti korištenjem WebElement funkcija i lokatora Selenium. Tipičan primjer web tablice bile bi specifikacije proizvoda prikazane na platformi e-trgovine.

Čitanje HTML web tablice

Postoje trenuci kada trebamo pristupiti elementima (obično tekstovima) koji se nalaze unutar HTML tablica. Međutim, vrlo je rijetko za web dizajnera dati ID ili atribut imena za određenu ćeliju u tablici. Stoga ne možemo koristiti uobičajene metode kao što su “By.id()”, “By.name()” ili “By.cssSelector()”. U ovom slučaju, najpouzdanija opcija je pristupiti im metodom “By.xpath()”.

Kako rukovati web tablicom u Selenium

Razmotrite HTML kod u nastavku za rukovanje web tablicama Selenium.

Kako napisati XPath za tablicu u Selenium

Koristit ćemo XPath da biste dobili unutarnji tekst ćelije koja sadrži tekst "četvrta ćelija".

Kako napisati XPath za tablicu u Selenium

Korak 1 – Postavite nadređeni element (tablica)

XPath lokatori u WebDriveru uvijek počinju dvostrukom kosom crtom “//”, a zatim slijedi nadređeni element. Budući da se bavimo web tablicama u Selenium, nadređeni element bi uvijek trebao biti označiti. Prva porcija našeg Selenium XPath lokator tablice bi stoga trebao započeti s “//table”.

Selenium Primjer web tablice

Korak 2 – Dodajte podređene elemente

Element odmah ispod je pa možemo to reći je "dijete" od . I također, je "roditelj" od . Svi podređeni elementi u XPathu smješteni su desno od nadređenog elementa, odvojeni jednom kosom crtom “/” kao što je kod prikazan u nastavku.

Selenium Primjer web tablice

Korak 3 – Dodajte predikate

The element sadrži dva oznake. Sada možemo reći da ova dva oznake su "djeca" od . Shodno tome, možemo reći da je roditelj oba elementi.

Još jedna stvar koju možemo zaključiti je da dvije elementi su braća i sestre. Braća i sestre se odnose na podređene elemente koji imaju istog roditelja.

Da biste došli do kojoj želimo pristupiti (onoj s tekstom "četvrta ćelija"), prvo moramo pristupiti drugi a ne prvi. Ako jednostavno napišemo “//table/tbody/tr”, tada ćemo pristupiti prvom označiti.

Dakle, kako ćemo pristupiti drugom zatim? Odgovor na ovo je koristiti Predikati.

Predikati su brojevi ili HTML atributi zatvoreni u paru uglatih zagrada "[ ]" koji razlikuju podređeni element od njegove braće i sestara. Budući da je kojem trebamo pristupiti je drugi, koristit ćemo "[2]" kao predikat.

Selenium Primjer web tablice

Ako nećemo koristiti nijedan predikat, XPath će pristupiti prvom bratu. Stoga možemo pristupiti prvom koristeći bilo koji od ovih XPath kodova.

Selenium Web tablica koristeći Xpath

Korak 4 – Dodajte sljedeće podređene elemente pomoću odgovarajućih predikata

Sljedeći element kojem trebamo pristupiti je drugi . Primjenjujući načela koja smo naučili iz koraka 2 i 3, finalizirat ćemo naš XPath kod da bude poput onog prikazanog u nastavku.

Web tablica u Selenium koristeći Xpath

Sada kada imamo ispravan XPath lokator, već možemo pristupiti ćeliji koju smo željeli i dobiti njezin unutarnji tekst pomoću donjeg koda. Pretpostavlja se da ste spremili gornji HTML kod kao “newhtml.html” unutar vašeg C pogona.

Web tablica u Selenium koristeći 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();
	}
}

Web tablica u Selenium koristeći Xpath

Pristup ugniježđenim tablicama

Ista načela o kojima se govori gore primjenjuju se na ugniježđene tablice. Ugniježđene tablice su tablice smještene unutar druge tablice. Primjer je prikazan u nastavku.

Kako pristupiti ugniježđenim tablicama u Selenium

Da bismo pristupili ćeliji s tekstom “4-5-6” koristeći koncepte “//roditelj/dijete” i predikat iz prethodnog odjeljka, trebali bismo moći smisliti XPath kod u nastavku.

Kako pristupiti ugniježđenim tablicama u Selenium


WebDriver kod u nastavku trebao bi moći dohvatiti unutarnji tekst ćelije kojoj pristupamo.

Pristup ugniježđenim tablicama u 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();
}

Ispis u nastavku potvrđuje da je uspješno pristupljeno unutarnjoj tablici.

Pristup ugniježđenim tablicama u Selenium

Korištenje atributa kao predikata

Ako je element napisan duboko unutar HTML koda tako da je vrlo teško odrediti broj koji se koristi za predikat, umjesto toga možemo koristiti jedinstveni atribut tog elementa.

U donjem primjeru, ćelija "New York to Chicago" nalazi se duboko u Mercury HTML kod početne stranice Tours.

Selenium Primjer web tablice koja koristi atribute kao predikate

Selenium Primjer web tablice koja koristi atribute kao predikate

U ovom slučaju, možemo koristiti jedinstveni atribut tablice (width=”270″) kao predikat. Atributi se koriste kao predikati tako što im se ispred stavlja simbol @. U gornjem primjeru ćelija "New York to Chicago" nalazi se u prvoj četvrtog , pa bi naš XPath trebao biti kao što je prikazano u nastavku.

Selenium Primjer web tablice s atributima kao predikatima

Upamtite to kada stavljamo XPath kod Java, trebali bismo upotrijebiti znak za izlaz unatrag kosu crtu “\” za dvostruke navodnike s obje strane “270” tako da argument niza By.xpath() neće biti prerano prekinut.

Selenium Primjer web tablice s atributima kao predikatima

Sada smo spremni pristupiti toj ćeliji pomoću donjeg koda.

Selenium Primjer web tablice s atributima kao predikatima

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 Primjer web tablice s atributima kao predikatima

Prečac: Koristite Inspect Element za pristup tablicama Selenium

Ako je broj ili atribut elementa izuzetno teško ili nemoguće dobiti, najbrži način za generiranje XPath koda je korištenje Inspect Element.

Razmotrite primjer u nastavku iz Mercury Početna stranica Tours.

Selenium Primjer web tablice s atributima kao predikatima

Korak 1

Koristite Firebug za dobivanje XPath koda.

Selenium Primjer web tablice s atributima kao predikatima

Korak 2

Potražite prvi roditeljski element "table" i izbrišite sve lijevo od njega.

Selenium Primjer web tablice s atributima kao predikatima

Korak 3

Preostalom dijelu koda dodajte dvostruku kosu crtu “//” i kopirajte ga u svoj WebDriver kod.

Selenium Primjer web tablice s atributima

WebDriver kod u nastavku moći će uspješno dohvatiti unutarnji tekst elementa kojem pristupamo.

Selenium Primjer web tablice s atributima

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

rezime

  • By.xpath() se obično koristi za pristup elementima WebTable u Selenium.
  • Ako je element napisan duboko unutar HTML koda tako da je vrlo teško odrediti broj koji se koristi za predikat, umjesto toga možemo koristiti jedinstveni atribut tog elementa za Selenium dobiti element tablice.
  • Atributi se koriste kao predikati tako što im se ispred stavlja simbol @.
  • Koristite Inspect Element za pristup web tablici Selenium