Kako se rukuje web tablicom u programu Selenium WebDriver

Sadržaj:

Anonim

Čitanje HTML web tablice

Postoje trenuci kada trebamo pristupiti elementima (obično tekstovima) koji se nalaze u HTML tablicama. Međutim, web dizajner rijetko daje atribut id ili ime određenoj ćeliji u tablici. Stoga ne možemo koristiti uobičajene metode poput "By.id ()", "By.name ()" ili "By.cssSelector ()". U ovom je slučaju najpouzdanija opcija pristupiti im metodom "By.xpath ()".

U ovom vodiču naučit ćete-

  • Kako napisati XPath za tablicu
  • Pristup ugniježđenim tablicama
  • Korištenje atributa kao predikata
  • Prečac: Upotrijebite Inspect Element za pristup tablicama u selenu

Kako napisati XPath za tablicu

Razmotrite HTML kôd u nastavku.

Upotrijebit ćemo XPath za dobivanje unutarnjeg teksta ćelije koji sadrži tekst "četvrta ćelija".

Korak 1 - Postavljanje nadređenog elementa (tablica)

Lokatori XPath u WebDriveru uvijek počinju s dvostrukom kosom crtom naprijed "//", a zatim slijedi nadređeni element . Budući da imamo posla s tablicama, nadređeni element uvijek treba biti oznaka

. Stoga bi prvi dio našeg XPath lokatora trebao početi s "// tablicom".

Korak 2 - dodajte podređene elemente

Element koji se nalazi neposredno ispod

je , tako da možemo reći da je "dijete"
. A također,
je "roditelj" . Svi podređeni elementi u XPathu postavljaju se s desne strane svog roditeljskog elementa, odvojeni jednom kosom crtom naprijed "/" kao kod prikazan dolje.

Korak 3 - dodajte predikate

Element

sadrži dvije oznake . Sada možemo reći da su ove dvije oznake "djeca" od . Slijedom toga, možemo reći da je roditelj oba elementa .

Druga stvar koju možemo zaključiti je da su dva

elementa braća i sestre. Braća i sestre odnose se na dječje elemente koji imaju istog roditelja .

Da bismo došli do

, a ne prvom. Ako jednostavno napišemo "// table / tbody / tr", tada ćemo pristupiti prvoj oznaci.

Pa, kako onda pristupiti drugom

? Odgovor je na upotrebu predikata .

Predikati su brojevi ili HTML atributi zatvoreni u par uglatih zagrada "[]" koji razlikuju podređeni element od njegove braće i sestara . Budući da je

kojem trebamo pristupiti drugi, koristit ćemo "[2]" kao predikat.

Ako nećemo koristiti predikat, XPath će pristupiti prvom bratu ili sestri. Stoga možemo pristupiti prvom

koristeći bilo koji od ovih XPath kodova.

Korak 4 - Dodajte sljedeće dijete elemente pomoću odgovarajućih predikata

Sljedeći element kojem trebamo pristupiti je drugi

, tako da bi naš XPath trebao biti kao što je prikazano u nastavku.

Imajte na umu da kada stavimo XPath kôd u Javu, trebamo upotrijebiti crtu unatrag crte "\" za dvostruke navodnike s obje strane "270", tako da argument niza By.xpath () neće biti prerano prekinut .

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

javna statička void glavna (String [] args) {String baseUrl = "http://demo.guru99.com/test/newtours/";Upravljački program za WebDriver = novi FirefoxDriver ();driver.get (baseUrl);String innerText = driver.findElement (Autor.xpath ("// tablica [@ širina = \" 270 \ "] / tbody / tr [4] / td")).getText ();System.out.println (innerText);driver.quit ();}

Prečac: Upotrijebite Inspect Element za pristup tablicama u selenu

Ako je broj ili atribut elementa izuzetno teško ili je nemoguće dobiti, najbrži način generiranja XPath koda je upotreba Inspect Elementa.

Razmotrite primjer u nastavku sa početne stranice Mercury Toursa.

Korak 1

Koristite Firebug za dobivanje XPath koda.

Korak 2

Potražite prvi nadređeni element "tablica" i izbrišite sve s lijeve strane.

3. korak

Prefiksirajte preostali dio koda s dvostrukom kosom crtom naprijed "//" i kopirajte ga na svoj WebDriver kôd.

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

javna statička void glavna (String [] args) {String baseUrl = "http://demo.guru99.com/test/newtours/";Upravljački program za WebDriver = novi FirefoxDriver ();driver.get (baseUrl);String innerText = driver.findElement (Autor.xpath ("// tablica / tjelo / tr / td [2]"+ "// tablica / tjelo / tr [4] / td /"+ "tablica / tjelo / tr / td [2] /"+ "stol / tjelo / tr [2] / td [1] /"+ "tablica [2] / tbody / tr [3] / td [2] / font")).getText ();System.out.println (innerText);driver.quit ();}

Sažetak

  • By.xpath () obično se koristi za pristup elementima tablice.
  • Ako je element napisan duboko u HTML kodu tako da je broj koji se koristi za predikat vrlo teško odrediti, umjesto toga možemo koristiti jedinstveni atribut tog elementa.
  • Atributi se koriste kao predikati dodavanjem prefiksa sa simbolom @.
  • Upotrijebite Inspect Element za pristup tablicama u selenu
kojem želimo pristupiti (onog s tekstom "četvrta ćelija"), prvo moramo pristupiti drugom
. Primjenjujući načela koja smo naučili iz koraka 2 i 3, dovršit ćemo naš XPath kôd kao da je prikazan u nastavku.

Sad kad imamo ispravan lokator XPath, već možemo pristupiti ćeliji koju smo željeli i dobiti njezin unutarnji tekst pomoću donjeg koda. Pretpostavlja se da ste gore spremljeni HTML kôd spremili kao "newhtml.html" na svoj C pogon.

javna statička void glavna (String [] args) {String baseUrl = "http://demo.guru99.com/test/write-xpath-table.html";Upravljački program za WebDriver = novi FirefoxDriver ();driver.get (baseUrl);String innerText = driver.findElement (By.xpath ("// tablica / tjelo / tr [2] / td [2]")). GetText ();System.out.println (innerText);driver.quit ();}}

Pristup ugniježđenim tablicama

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

Da bismo pristupili ćeliji s tekstom "4-5-6" pomoću "// roditelj / dijete" i predikatnim konceptima iz prethodnog odjeljka, trebali bismo biti u mogućnosti pronaći XPath kôd u nastavku.

Dolje navedeni WebDriver kôd trebao bi moći dohvatiti unutarnji tekst ćelije kojoj pristupamo.

javna statička void glavna (String [] args) {String baseUrl = "http://demo.guru99.com/test/accessing-nested-table.html";Upravljački program za WebDriver = novi 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 ();}

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

Korištenje atributa kao predikata

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

U primjeru u nastavku, ćelija "New York to Chicago" nalazi se duboko u HTML kodu početne stranice Mercury Toursa.

U ovom slučaju kao predikat možemo koristiti jedinstveni atribut tablice (width = "270"). Atributi se koriste kao predikati dodavanjem prefiksa sa simbolom @ . U gornjem primjeru, ćelija "New York do Chicaga" nalazi se u prvoj

četvrtoj