Hogyan kezeljük a webtáblát a szelén WebDriver programban

Tartalomjegyzék:

Anonim

HTML webtábla olvasása

Van, amikor olyan elemekhez (általában szövegekhez) kell hozzáférnünk, amelyek a HTML táblákban találhatók. Ugyanakkor nagyon ritkán fordul elő, hogy egy webdesigner azonosítót vagy névattribútumot adjon meg a táblázat egy bizonyos cellájához. Ezért nem használhatjuk a szokásos módszereket, például a "By.id ()", "By.name ()" vagy "By.cssSelector ()". Ebben az esetben a legmegbízhatóbb lehetőség a "By.xpath ()" módszerrel történő elérés.

Ebben az oktatóanyagban megtanulja-

  • Hogyan kell írni az XPath táblázatot
  • A beágyazott táblák elérése
  • Attribútumok használata predikátumként
  • Parancsikon: Használja az Elem ellenőrzése elemet a szelénben lévő táblák eléréséhez

Hogyan kell írni az XPath táblázatot

Vegye figyelembe az alábbi HTML kódot.

Az XPath használatával megkapjuk a "negyedik cella" szöveget tartalmazó cella belső szövegét.

1. lépés - Állítsa be a szülői elemet (táblázat)

Az XPath lokátorok a WebDriver programban mindig kettős előrejelzéssel kezdődnek "//", majd a szülő elem követi őket . Mivel táblákkal van dolgunk, a szülőelemnek mindig a

címkének kell lennie. XPath lokátorunk első részének tehát a "// table" betűvel kell kezdődnie.

2. lépés - Adja hozzá a gyermek elemeket

A közvetlenül a

alatt található elem a , így azt mondhatjuk, hogy a a
gyermeke. És a
a "szülője" is. Az XPath összes gyermekeleme a szülőelemétől jobbra helyezkedik el, elválasztva egy előre "/" perjelgel, mint az alább látható kód.

3. lépés - Adjon hozzá predikátumokat

A

elem két címkét tartalmaz. Most azt mondhatjuk, hogy ez a két tag a "gyermekei". Következésképpen azt mondhatjuk, hogy a mindkét elem szülője.

Egy másik dolog, amire következtethetünk, hogy a két

elem testvér. A testvérek olyan gyermekelemekre utalnak, amelyeknek ugyanaz a szülőjük .

A hozzáférni kívánt

-hez kell hozzáférnünk , nem pedig az elsőhöz. Ha egyszerűen a "// tábla / tbody / tr" szót írjuk, akkor hozzáférünk az első címkéhez.

Tehát hogyan érhetjük el a második

-t? Erre a Predikátusok használata a válasz .

Az predikátumok olyan számok vagy HTML attribútumok, amelyek szögletes zárójelek közé vannak zárva "[]", és megkülönböztetik a gyermek elemet a testvéreitől . Mivel a

, amihez hozzáférnünk kell, a második, ezért a "[2]" szót fogjuk használni állítmányként.

Ha nem használunk állítmányokat, az XPath hozzáfér az első testvérhez. Ezért elérhetjük az első

-t ezen XPath kódok bármelyikével.

4. lépés - Adja hozzá a sikeres gyermekelemeket a megfelelő predikátumokkal

A következő elem, amelyhez hozzáférnünk kell, a második

első
(a "negyedik cella" szövegű) eléréséhez először a második
. A 2. és 3. lépésben tanult elveket alkalmazva véglegesítjük az XPath kódunkat, hogy az olyan legyen, mint az alábbiakban.

Most, hogy megvan a megfelelő XPath lokátor, máris elérhetjük a kívánt cellát, és megszerezhetjük annak belső szövegét az alábbi kód segítségével. Feltételezi, hogy a fenti HTML kódot "newhtml.html" néven mentette el a C meghajtóba.

public static void main (String [] érvel) {Karaktersorozat baseUrl = "http://demo.guru99.com/test/write-xpath-table.html";WebDriver illesztőprogram = new FirefoxDriver ();driver.get (baseUrl);String internalText = driver.findElement (By.xpath ("// tábla / tbody / tr [2] / td [2]")). GetText ();System.out.println (innerText);driver.quit ();}}

A beágyazott táblák elérése

A fent tárgyalt elvek a beágyazott táblákra is érvényesek. A beágyazott táblák egy másik táblázatban található táblák . Az alábbiakban egy példát mutatunk be.

A "4-5-6" szövegű cellához a "// szülő / gyermek" és az előző szakasz predikátumfogalmainak felhasználásával képesnek kell lennünk előállítani az alábbi XPath kódot.

Az alábbi WebDriver-kódnak képesnek kell lennie arra, hogy lekérje annak a cellának a belső szövegét, amelyhez hozzáférünk.

public static void main (String [] érvel) {Karakterlánc baseUrl = "http://demo.guru99.com/test/accessing-nested-table.html";WebDriver illesztőprogram = new FirefoxDriver ();driver.get (baseUrl);String internalText = driver.findElement (By.xpath ("// tábla / tbody / tr [2] / td [2] / tábla / tbody / tr / td [2]")). GetText ();System.out.println (innerText);driver.quit ();}

Az alábbi kimenet megerősíti, hogy a belső asztal sikeresen elérve volt.

Attribútumok használata predikátumként

Ha az elem a HTML-kód mélyére van írva, így az predikátumhoz használandó számot nagyon nehéz meghatározni, akkor az adott elem egyedi attribútumát használhatjuk.

Az alábbi példában a "New York-tól Chicagóig" cella a Mercury Tours honlap HTML-kódjának mélyén található.

Ebben az esetben predikátumként használhatjuk a táblázat egyedi attribútumát (width = "270"). Az attribútumokat predikátumként használják, ha a @ szimbólummal látják el . A fenti példában a "New York-tól Chicagóig" cella a negyedik

-ében található, ezért az XPath-nak az alábbiak szerint kell lennie.

Ne felejtse el, hogy amikor az XPath kódot a Java-ba helyezzük, akkor a "\" escape karaktert visszafelé kell perjeleznünk a "270" mindkét oldalán található dupla idézőjelekbe, hogy a By.xpath () karakterlánc argumentuma ne záruljon le idő előtt .

Most már készen állunk arra, hogy az alábbi kód segítségével hozzáférjünk ahhoz a cellához.

public static void main (String [] érvel) {Karaktersorozat baseUrl = "http://demo.guru99.com/test/newtours/";WebDriver illesztőprogram = new FirefoxDriver ();driver.get (baseUrl);String internalText = driver.findElement (Írta:.xpath ("// tábla [@width = \" 270 \ "] / tbody / tr [4] / td")).getText ();System.out.println (innerText);driver.quit ();}

Parancsikon: Használja az Elem ellenőrzése elemet a szelénben lévő táblák eléréséhez

Ha egy elem számát vagy attribútumát rendkívül nehéz vagy lehetetlen megszerezni, akkor az XPath kód előállításának leggyorsabb módja az Elem ellenőrzése.

Tekintsük az alábbi példát a Mercury Tours honlapjáról.

1. lépés

Használja a Firebug programot az XPath kód megszerzéséhez.

2. lépés

Keresse meg az első "table" szülő elemet, és töröljön mindent a bal oldalán.

3. lépés

A kód fennmaradó részét tegye előre dupla előtöréssel "//", és másolja át a WebDriver kódjára.

Az alábbi WebDriver-kód sikeresen be tudja szerezni az elérni kívánt elem belső szövegét.

public static void main (String [] érvel) {Karaktersorozat baseUrl = "http://demo.guru99.com/test/newtours/";WebDriver illesztőprogram = new FirefoxDriver ();driver.get (baseUrl);String internalText = driver.findElement (Írta:.xpath ("// tábla / tbody / tr / td [2]"+ "// tábla / tbody / tr [4] / td /"+ "table / tbody / tr / td [2] /"+ "table / tbody / tr [2] / td [1] /"+ "tábla [2] / tbody / tr [3] / td [2] / font")).getText ();System.out.println (innerText);driver.quit ();}

Összegzés

  • A By.xpath () általánosan használt táblázatelemek elérésére.
  • Ha az elem a HTML-kód mélyére van írva, így az predikátumhoz használandó számot nagyon nehéz meghatározni, akkor az adott elem egyedi attribútumát használhatjuk.
  • Az attribútumokat predikátumként használják, ha a @ szimbólummal látják el.
  • Használja az Ellenőrizze az elemet a szelénben lévő táblák eléréséhez