Kako ravnati s spletno tabelo v programu Selenium WebDriver

Kazalo:

Anonim

Branje spletne tabele HTML

Včasih moramo dostopati do elementov (običajno besedil), ki so znotraj tabel HTML. Vendar pa spletni oblikovalec zelo redko poda atribut id ali ime določeni celici v tabeli. Zato ne moremo uporabiti običajnih metod, kot so "By.id ()", "By.name ()" ali "By.cssSelector ()". V tem primeru je najbolj zanesljiva možnost dostopa do njih z metodo "By.xpath ()".

V tej vadnici boste izvedeli-

  • Kako napisati XPath za tabelo
  • Dostop do ugnezdenih tabel
  • Uporaba lastnosti kot predikata
  • Bližnjica: Uporabite element Preglej za dostop do tabel v selenu

Kako napisati XPath za tabelo

Upoštevajte spodnjo kodo HTML.

XPath bomo uporabili za pridobitev notranjega besedila celice, ki vsebuje besedilo "četrta celica".

1. korak - nastavite nadrejeni element (tabela)

Lokatorji XPath v WebDriverju se vedno začnejo z dvojno poševnico naprej "//", ki ji sledi nadrejeni element . Ker imamo opravka s tabelami, mora biti nadrejeni element vedno oznaka

. Prvi del našega lokatorja XPath bi se zato moral začeti s "// tabelo".

2. korak - dodajte podrejene elemente

Element pod

je , zato lahko rečemo, da je "podrejen"
. In tudi
je "nadrejeni" . Vsi podrejeni elementi v XPathu so postavljeni desno od nadrejenega elementa, ločeni z eno poševnico naprej / /, kot je prikazana spodaj.

3. korak - dodajte predikate

Element

vsebuje dve oznaki . Zdaj lahko rečemo, da sta ti dve oznaki "otroci" . Posledično lahko rečemo, da je nadrejena za oba elementa .

Druga stvar, ki jo lahko sklepamo, je, da sta elementa

brata in sestre. Bratje in sestre se nanašajo na podrejene elemente z istim staršem .

Da pridemo do

in ne do prvega. Če preprosto napišemo "// table / tbody / tr", bomo dostopali do prve oznake .

Kako torej dostopati do drugega

? Odgovor na to je uporaba predikatov .

Predikati so številke ali atributi HTML, zaprti v par oglatih oklepajev "[]", ki ločujejo podrejeni element od njegovih bratov in sester . Ker je

, do katerega moramo dostopati, drugi, bomo kot predikat uporabili "[2]".

Če ne bomo uporabili nobenega predikata, bo XPath dostopal do prvega brata ali sestre. Zato lahko do prve

dostopamo z eno od teh XPath kod.

4. korak - z naslednjimi predikati dodajte naslednje podrejene elemente

Naslednji element, do katerega moramo dostopati, je drugi

, zato bi moral biti naš XPath tak, kot je prikazano spodaj.

Ne pozabite, da bi morali, ko v Java vstavimo kodo XPath, uporabiti poševnico nazaj "\" za dvojne narekovaje na obeh straneh "270", tako da argument niza By.xpath () ne bo predčasno zaključen .

Zdaj smo pripravljeni dostopati do te celice s spodnjo kodo.

public static void main (String [] args) {String baseUrl = "http://demo.guru99.com/test/newtours/";Gonilnik WebDriver = novi FirefoxDriver ();driver.get (baseUrl);String innerText = driver.findElement (avtor.xpath ("// tabela [@ širina = \" 270 \ "] / tbody / tr [4] / td")).getText ();System.out.println (innerText);driver.quit ();}

Bližnjica: Uporabite element Preglej za dostop do tabel v selenu

Če je številko ali atribut elementa izredno težko ali nemogoče dobiti, je najhitrejši način za generiranje kode XPath z uporabo Preveri element.

Oglejte si spodnji primer na domači strani Mercury Tours.

Korak 1

Za pridobitev kode XPath uporabite Firebug.

2. korak

Poiščite prvi nadrejeni element »tabela« in izbrišite vse levo od njega.

3. korak

Predostavite preostali del kode z dvojno poševnico naprej "//" in jo kopirajte v kodo WebDriver.

Spodnja koda WebDriver bo lahko uspešno pridobila notranje besedilo elementa, do katerega dostopamo.

public static void main (String [] args) {String baseUrl = "http://demo.guru99.com/test/newtours/";Gonilnik WebDriver = novi FirefoxDriver ();driver.get (baseUrl);String innerText = driver.findElement (avtor.xpath ("// tabela / tbody / tr / td [2]"+ "// tabela / tbody / tr [4] / td /"+ "tabela / telo / tr / td [2] /"+ "tabela / telo / tr [2] / td [1] /"+ "tabela [2] / tbody / tr [3] / td [2] / pisava")).getText ();System.out.println (innerText);driver.quit ();}

Povzetek

  • By.xpath () se pogosto uporablja za dostop do elementov tabele.
  • Če je element zapisan globoko znotraj kode HTML, tako da je številko, ki jo je treba uporabiti za predikat, zelo težko določiti, lahko namesto tega uporabimo edinstveni atribut tega elementa.
  • Atributi se uporabljajo kot predikati, tako da jih predpišejo s simbolom @.
  • Za dostop do tabel v selenu uporabite element Inspect
, do katerega želimo dostopati (tistega z besedilom "četrta celica"), moramo najprej dostopati do drugega
. Z uporabo načel, ki smo se jih naučili iz korakov 2 in 3, bomo dokončali svojo kodo XPath, kot je prikazano spodaj.

Zdaj, ko imamo pravi lokator XPath, lahko že dostopamo do celice, ki smo jo želeli, in pridobimo njeno notranje besedilo s spodnjo kodo. Predpostavlja se, da ste zgornjo kodo HTML shranili kot "newhtml.html" v pogon C.

public static void main (String [] args) {String baseUrl = "http://demo.guru99.com/test/write-xpath-table.html";Gonilnik WebDriver = novi FirefoxDriver ();driver.get (baseUrl);String innerText = driver.findElement (By.xpath ("// table / tbody / tr [2] / td [2]")). GetText ();System.out.println (innerText);driver.quit ();}}

Dostop do ugnezdenih tabel

Ista načela, obravnavana zgoraj, veljajo za ugnezdene tabele. Vgnezdene tabele so tabele, ki se nahajajo znotraj druge tabele . Primer je prikazan spodaj.

Za dostop do celice z besedilom "4-5-6" z uporabo "// starš / otrok" in predikatnimi koncepti iz prejšnjega razdelka bi morali imeti spodnjo kodo XPath.

Spodnja koda WebDriver mora biti sposobna pridobiti notranje besedilo celice, do katere dostopamo.

public static void main (String [] args) {String baseUrl = "http://demo.guru99.com/test/accessing-nested-table.html";Gonilnik 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 ();}

Spodnji izhod potrjuje, da je bila notranja tabela uspešno dostopna.

Uporaba lastnosti kot predikata

Če je element zapisan globoko znotraj kode HTML, tako da je številko, ki jo je treba uporabiti za predikat, zelo težko določiti, lahko namesto tega uporabimo edinstveni atribut tega elementa.

V spodnjem primeru se celica »New York to Chicago« nahaja globoko v HTML kodi domače strani Mercury Tours.

V tem primeru lahko kot predikat uporabimo edinstveni atribut tabele (širina = "270"). Atributi se uporabljajo kot predikati, tako da jih predpišejo s simbolom @ . V zgornjem primeru se celica "New York do Chicaga" nahaja v prvi

četrte