Cum să gestionați tabelul web în Selenium webdriver

În ce este un tabel web Selenium?

A Tabel Web in Selenium este un WebElement utilizat pentru reprezentarea tabelară a datelor sau informațiilor. Datele sau informațiile afișate pot fi statice sau dinamice. Tabelul web și elementele sale pot fi accesate utilizând funcțiile și localizatorii WebElement în Selenium. Un exemplu tipic de tabel web ar fi specificațiile produsului afișate pe o platformă de comerț electronic.

Citirea unui tabel web HTML

Există momente când trebuie să accesăm elemente (de obicei texte) care se află în tabelele HTML. Cu toate acestea, este foarte rar ca un web designer să furnizeze un atribut id sau nume unei anumite celule din tabel. Prin urmare, nu putem folosi metodele obișnuite precum „By.id()”, „By.name()” sau „By.cssSelector()”. În acest caz, cea mai fiabilă opțiune este să le accesați folosind metoda „By.xpath()”.

Cum să gestionați tabelul web în Selenium

Luați în considerare codul HTML de mai jos pentru a gestiona tabelele web Selenium.

Cum se scrie XPath pentru tabel în Selenium

Noi vom folosi XPath pentru a obține textul interior al celulei care conține textul „a patra celulă”.

Cum se scrie XPath pentru tabel în Selenium

Pasul 1 - Setați elementul părinte (tabel)

Localizatoarele XPath din WebDriver încep întotdeauna cu o dublă bară oblică „//” și apoi sunt urmate de elementul părinte. Deoarece avem de-a face cu tabele web în Selenium, elementul părinte ar trebui să fie întotdeauna etichetă. Prima porțiune a noastră Selenium Prin urmare, locatorul tabelului XPath ar trebui să înceapă cu „//table”.

Selenium Exemplu de tabel web

Pasul 2 – Adăugați elementele copil

Elementul imediat sub este deci putem spune asta este „copilul” al . Si deasemenea, este „părintele” al . Toate elementele secundare din XPath sunt plasate la dreapta elementului lor părinte, separate cu o bară oblică „/” ca codul prezentat mai jos.

Selenium Exemplu de tabel web

Pasul 3 – Adăugați predicate

The elementul conține două Etichete. Putem spune acum că acești doi etichetele sunt „copii” ai . În consecință, putem spune că este părintele ambelor elemente.

Un alt lucru la care putem concluziona este că cei doi elementele sunt frați. Frații se referă la elementele copil care au același părinte.

Pentru a ajunge la dorim să accesăm (cel cu textul „a patra celulă”), trebuie mai întâi să accesăm al doilea si nu primul. Dacă scriem pur și simplu „//table/tbody/tr”, atunci îl vom accesa pe primul etichetă.

Deci, cum accesăm al doilea apoi? Răspunsul la aceasta este folosirea Predicati.

Predicatele sunt numere sau atribute HTML incluse într-o pereche de paranteze drepte „[ ]” care disting un element copil de frații săi. De când trebuie să accesăm este al doilea, vom folosi „[2]” ca predicat.

Selenium Exemplu de tabel web

Dacă nu vom folosi niciun predicat, XPath va accesa primul frate. Prin urmare, putem accesa primul folosind oricare dintre aceste coduri XPath.

Selenium Tabel Web folosind XPath

Pasul 4 – Adăugați elementele copil care urmează utilizând predicatele corespunzătoare

Următorul element pe care trebuie să-l accesăm este al doilea . Aplicând principiile pe care le-am învățat de la pașii 2 și 3, vom finaliza codul nostru XPath pentru a fi ca cel prezentat mai jos.

Tabel Web în Selenium folosind XPath

Acum că avem locatorul XPath corect, putem deja accesa celula pe care am dorit-o și obținem textul său interior folosind codul de mai jos. Se presupune că ați salvat codul HTML de mai sus ca „newhtml.html” în C Drive.

Tabel Web în Selenium folosind 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();
	}
}

Tabel Web în Selenium folosind XPath

Accesarea tabelelor imbricate

Aceleași principii discutate mai sus se aplică tabelelor imbricate. Tabelele imbricate sunt tabele situate într-un alt tabel. Un exemplu este prezentat mai jos.

Cum să accesați tabelele imbricate în Selenium

Pentru a accesa celula cu textul „4-5-6” folosind „//părinte/copil” și conceptele de predicat din secțiunea anterioară, ar trebui să putem veni cu codul XPath de mai jos.

Cum să accesați tabelele imbricate în Selenium


Codul WebDriver de mai jos ar trebui să poată prelua textul interior al celulei pe care o accesăm.

Accesarea tabelelor imbricate în 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();
}

Rezultatul de mai jos confirmă că tabelul interior a fost accesat cu succes.

Accesarea tabelelor imbricate în Selenium

Utilizarea atributelor ca predicate

Dacă elementul este scris adânc în codul HTML, astfel încât numărul de utilizat pentru predicat este foarte dificil de determinat, putem folosi în schimb atributul unic al elementului respectiv.

În exemplul de mai jos, celula „de la New York la Chicago” este situată adânc Mercury Codul HTML al paginii de pornire Tours.

Selenium Exemplu de tabel web folosind atribute ca predicate

Selenium Exemplu de tabel web folosind atribute ca predicate

În acest caz, putem folosi atributul unic al tabelului (width=”270″) ca predicat. Atributele sunt folosite ca predicate prin prefixarea lor cu simbolul @. În exemplul de mai sus, celula „De la New York la Chicago” este situată în prima al patrulea , și astfel XPath-ul nostru ar trebui să fie așa cum se arată mai jos.

Selenium Exemplu de tabel web cu atribute ca predicate

Amintiți-vă că atunci când introducem codul XPath Java, ar trebui să folosim caracterul de evacuare bară oblică inversă „\” pentru ghilimelele duble de pe ambele părți ale lui „270”, astfel încât argumentul șir al lui By.xpath() să nu fie terminat prematur.

Selenium Exemplu de tabel web cu atribute ca predicate

Acum suntem gata să accesăm acea celulă folosind codul de mai jos.

Selenium Exemplu de tabel web cu atribute ca predicate

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 Exemplu de tabel web cu atribute ca predicate

Comandă rapidă: utilizați Inspect Element pentru accesarea tabelelor în Selenium

Dacă numărul sau atributul unui element este extrem de dificil sau imposibil de obținut, cea mai rapidă modalitate de a genera codul XPath este utilizarea Inspect Element.

Luați în considerare exemplul de mai jos de la Mercury Pagina principală a excursiilor.

Selenium Exemplu de tabel web cu atribute ca predicate

Etapa 1

Utilizați Firebug pentru a obține codul XPath.

Selenium Exemplu de tabel web cu atribute ca predicate

Etapa 2

Căutați primul element părinte „tabel” și ștergeți totul din stânga acestuia.

Selenium Exemplu de tabel web cu atribute ca predicate

Etapa 3

Prefixați partea rămasă a codului cu dublă oblică „//” și copiați-o în codul dvs. WebDriver.

Selenium Exemplu de tabel web cu atribute

Codul WebDriver de mai jos va putea prelua cu succes textul interior al elementului pe care îl accesăm.

Selenium Exemplu de tabel web cu atribute

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

Rezumat

  • By.xpath() este folosit în mod obișnuit pentru a accesa elemente din WebTable în Selenium.
  • Dacă elementul este scris adânc în codul HTML, astfel încât numărul de utilizat pentru predicat este foarte dificil de determinat, putem folosi în schimb atributul unic al elementului respectiv pentru Selenium obține elementul tabelului.
  • Atributele sunt folosite ca predicate prin prefixarea lor cu simbolul @.
  • Utilizați Inspect Element pentru accesarea WebTable în Selenium