Există momente când trebuie să accesăm elemente (de obicei texte) care se află în tabele HTML. Cu toate acestea, este foarte rar ca un designer web 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 ()”.
În acest tutorial, veți învăța-
Cum se scrie XPath pentru tabel
Accesarea tabelelor imbricate
Utilizarea atributelor ca predicatori
Comandă rapidă: utilizați elementul Inspectare pentru accesarea tabelelor din seleniu
Cum se scrie XPath pentru tabel
Luați în considerare codul HTML de mai jos.
Vom folosi XPath pentru a obține textul interior al celulei care conține textul „a patra celulă”.
Pasul 1 - Setați elementul părinte (tabel)
Localizatorii XPath din WebDriver încep întotdeauna cu o linie dublă „//” și apoi sunt urmate de elementul părinte . Deoarece avem de-a face cu tabele, elementul părinte ar trebui să fie întotdeauna eticheta
. Prin urmare, prima porțiune a localizatorului nostru XPath ar trebui să înceapă cu „// tabel”.
Pasul 2 - Adăugați elementele copil
Elementul aflat imediat sub
este
, deci putem spune că
este „copilul”
. Și, de asemenea,
este „părintele” lui
. Toate elementele secundare din XPath sunt plasate în partea dreaptă a elementului lor părinte, separate cu o singură bară „/”, precum codul prezentat mai jos.
Pasul 3 - Adăugați predicați
Elementul
conține două etichete
. Putem spune acum că aceste două etichete
sunt „copii” ai lui
. În consecință, putem spune că
este părintele ambelor elemente
.
Un alt lucru pe care îl putem concluziona este că cele două elemente
sunt frați. Frații se referă la elementele copilului care au același părinte .
Pentru a ajunge la
pe care dorim să îl accesăm (cea cu textul „a patra celulă”), trebuie mai întâi să accesăm a doua
și nu prima. Dacă scriem pur și simplu „// tabel / tbody / tr”, atunci vom accesa prima etichetă
.
Deci, cum accesăm al doilea
atunci? Răspunsul la acest lucru este să folosiți predicații .
Predicatele sunt numere sau atribute HTML închise într-o pereche de paranteze pătrate „[]” care disting un element copil de frații săi . Deoarece
pe care trebuie să îl accesăm este al doilea, vom folosi „[2]” ca predicat.
Dacă nu vom folosi niciun predicat, XPath va accesa primul frate. Prin urmare, putem accesa primul
Următorul element pe care trebuie să îl accesăm este al doilea
. Aplicând principiile pe care le-am învățat din pașii 2 și 3, vom finaliza codul nostru XPath pentru a fi ca cel prezentat mai jos.
Acum că avem localizatorul XPath corect, putem accesa deja celula dorită și putem obține textul interior folosind codul de mai jos. Se presupune că ați salvat codul HTML de mai sus ca „newhtml.html” în C Drive.
public static main main (String [] args) {String baseUrl = "http://demo.guru99.com/test/write-xpath-table.html";Driver WebDriver = nou FirefoxDriver ();driver.get (baseUrl);Șir interiorTest = driver.findElement (By.xpath ("// tabel / tbody / tr [2] / td [2]")). GetText ();System.out.println (innerText);driver.quit ();}}
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.
Pentru a accesa celula cu textul „4-5-6” utilizând conceptele „// părinte / copil” și predicate din secțiunea anterioară, ar trebui să putem veni cu codul XPath de mai jos.
Codul WebDriver de mai jos ar trebui să poată recupera textul interior al celulei la care accesăm.
Ieșirea de mai jos confirmă faptul că tabelul interior a fost accesat cu succes.
Utilizarea atributelor ca predicatori
Dacă elementul este scris profund în codul HTML astfel încât numărul de utilizat pentru predicat este foarte dificil de determinat, putem folosi în schimb atributul unic al acelui element.
În exemplul de mai jos, celula „New York-Chicago” este amplasată adânc în codul HTML al paginii de pornire Mercury Tours.
În acest caz, putem folosi atributul unic al tabelului (lățimea = "270") ca predicat. Atributele sunt folosite ca predicate prin prefixarea acestora cu simbolul @ . În exemplul de mai sus, celula „New York-Chicago” este situată în primul
al patrulea
, astfel XPath-ul nostru ar trebui să fie așa cum se arată mai jos.
Amintiți-vă că, atunci când punem codul XPath în Java, ar trebui să folosim caracterul de evacuare înapoi „\" pentru ghilimele duble de pe ambele părți ale „270”, astfel încât argumentul șir al By.xpath () să nu fie terminat prematur. .
Acum suntem gata să accesăm acea celulă folosind codul de mai jos.
public static main main (String [] args) {String baseUrl = "http://demo.guru99.com/test/newtours/";Driver WebDriver = nou FirefoxDriver ();driver.get (baseUrl);String innerText = driver.findElement (By.xpath ("// tabel [@width = \" 270 \ "] / tbody / tr [4] / td")).getText ();System.out.println (innerText);driver.quit ();}
Comandă rapidă: utilizați elementul Inspectare pentru accesarea tabelelor din seleniu
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 folosirea Inspect Element.
Luați în considerare exemplul de mai jos de pe pagina principală Mercury Tours.
Pasul 1
Utilizați Firebug pentru a obține codul XPath.
Pasul 2
Căutați primul element părinte „tabel” și ștergeți totul din stânga acestuia.
Pasul 3
Prefixați partea rămasă a codului cu o bară dublă „//” și copiați-o în codul dvs. WebDriver.
Codul WebDriver de mai jos va putea prelua cu succes textul interior al elementului pe care îl accesăm.
By.xpath () este utilizat în mod obișnuit pentru a accesa elementele tabelului.
Dacă elementul este scris profund în codul HTML astfel încât numărul de utilizat pentru predicat este foarte dificil de determinat, putem folosi în schimb atributul unic al acelui element.
Atributele sunt folosite ca predicate prin prefixarea acestora cu simbolul @.
Utilizați Elementul de inspecție pentru accesarea meselor în seleniu