Hogyan kell kezelni a webtáblát Selenium webdriver
Miben található a webtábla Selenium?
A Web táblázat in Selenium az adatok vagy információk táblázatos ábrázolására használt webelem. A megjelenített adatok vagy információk lehetnek statikusak vagy dinamikusak. A webtábla és elemei a WebElement függvények és lokátorok segítségével érhetők el Selenium. A webtábla tipikus példája az e-kereskedelmi platformon megjelenített termékleírások.
HTML webtábla olvasása
Vannak esetek, amikor olyan elemekhez (általában szövegekhez) kell hozzáférnünk, amelyek HTML-táblázatokon belül vannak. Azonban nagyon ritkán fordul elő, hogy egy webtervező adjon meg azonosítót vagy név attribútumot a táblázat egy bizonyos cellájához. Ezért nem használhatjuk a szokásos módszereket, mint például a „By.id()”, „By.name()” vagy „By.cssSelector()”. Ebben az esetben a legmegbízhatóbb lehetőség a „By.xpath()” metódussal elérni őket.
Hogyan kell kezelni a webtáblát Selenium
Vegye figyelembe az alábbi HTML-kódot a webtáblák kezeléséhez Selenium.
Használni fogjuk XPath hogy megkapja a „negyedik cella” szöveget tartalmazó cella belső szövegét.
1. lépés – Állítsa be a szülő elemet (táblázat)
Az XPath lokátorok a WebDriverben mindig dupla perjel „//”-vel kezdődnek, majd a szülőelemmel. Mivel webtáblákkal van dolgunk Selenium, a szülő elemnek mindig a címke. A miénk első része Selenium Az XPath táblakeresőnek ezért „//table” karakterrel kell kezdődnie.
2. lépés – Adja hozzá a gyermekelemeket
Az elem közvetlenül alatta van szóval azt mondhatjuk a „gyermeke”. . És még, a „szülője”. . Az XPath összes gyermekeleme a szülőelemtől jobbra helyezkedik el, egy perjellel elválasztva, az alábbi kód szerint.
3. lépés – Predikátumok hozzáadása
A elem kettőt tartalmaz címkéket. Most már elmondhatjuk, hogy ez a kettő címkék „gyermekei”. . Következésképpen azt mondhatjuk mindkettő szülője elemeket.
Egy másik dolog, amiből arra következtethetünk, hogy a kettő elemek testvérek. A testvérek olyan gyermekelemekre utalnak, amelyeknek ugyanaz a szülője.
Ahhoz, hogy a hozzá akarunk férni (a „negyedik cella”) szöveggel rendelkezőhöz, először el kell érnünk a második és nem az első. Ha egyszerűen azt írjuk, hogy „//table/tbody/tr”, akkor az elsőhöz fogunk hozzáférni címke.
Tehát hogyan érhetjük el a másodikat akkor? A válasz erre az, hogy használja Predikátumok.
Az predikátumok olyan számok vagy HTML-attribútumok, amelyek szögletes zárójelben „[ ]” vannak zárva, amelyek megkülönböztetik a gyermekelemet a testvéreitől.. Mivel a el kell érnünk a másodikat, akkor a „[2]”-t használjuk predikátumként.
Ha nem használunk predikátumot, az XPath hozzáfér az első testvérhez. Ezért hozzáférhetünk az elsőhöz ezen XPath kódok bármelyikének használatával.
4. lépés – Adja hozzá a következő gyermekelemeket a megfelelő predikátumok használatával
A következő elem, amelyet el kell érnünk, a második . A 2. és 3. lépésből tanult alapelveket alkalmazva véglegesítjük XPath kódunkat, hogy olyan legyen, mint az alább látható.
Most, hogy megvan a megfelelő XPath lokátor, már elérhetjük a kívánt cellát, és az alábbi kód segítségével megkaphatjuk a belső szövegét. Feltételezi, hogy a fenti HTML-kódot „newhtml.html” néven mentette el a C meghajtón.
public static void main(String[] args) { String baseUrl = "https://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(); } }
Beágyazott táblázatok elérése
A fent tárgyalt elvek érvényesek a beágyazott táblákra is. A beágyazott táblázatok egy másik táblán belül található táblázatok. Az alábbiakban egy példa látható.
A „4-5-6” szövegű cella eléréséhez a „//szülő/gyermek” és az előző szakasz predikátum fogalmaival, az alábbi XPath kóddal kell előállnunk.
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[] args) { String baseUrl = "https://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(); }
Az alábbi kimenet megerősíti, hogy a belső tábla sikeresen elérhető.
Attribútumok használata predikátumként
Ha az elemet a HTML-kód mélyén írják, így az állítmányhoz használandó számot nagyon nehéz meghatározni, használhatjuk helyette az elem egyedi attribútumait.
Az alábbi példában a „New York – Chicago” cella mélyen található Mercury A Tours kezdőlapjának HTML kódja.
Ebben az esetben a tábla egyedi attribútuma (width=”270″) használható predikátumként. Az attribútumok predikátumként használatosak úgy, hogy előtagjukat a @ szimbólummal látják el. A fenti példában a „New York – Chicago” cella az elsőben található a negyedik , így az XPath-unknak az alábbiak szerint kell lennie.
Ne feledje, hogy amikor beírjuk az XPath kódot Java, a „270” mindkét oldalán a „\” escape karaktert használjuk a dupla idézőjelek közé, hogy a By.xpath() karakterlánc-argumentuma ne fejeződjön le idő előtt.
Most már készen állunk a cella elérésére az alábbi kóddal.
public static void main(String[] args) { String baseUrl = "https://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(); }
Parancsikon: Használja az Inspect Elementet a táblázatok eléréséhez Selenium
Ha egy elem számát vagy attribútumait rendkívül nehéz vagy lehetetlen megszerezni, akkor az XPath kód létrehozásának leggyorsabb módja az Elem vizsgálata.
Tekintsük az alábbi példát innen Mercury A túrák honlapja.
1 lépés
A Firebug segítségével szerezze be az XPath kódot.
2 lépés
Keresse meg az első „tábla” szülőelemet, és töröljön mindent, ami tőle balra található.
3 lépés
A kód fennmaradó részét dupla perjel „//” jelölje be, és másolja át a WebDriver kódjába.
Az alábbi WebDriver kód képes lesz sikeresen lekérni az éppen elért elem belső szövegét.
public static void main(String[] args) { String baseUrl = "https://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(); }
Összegzésként
- A By.xpath() általánosan használt a WebTable elemeinek eléréséhez Selenium.
- Ha az elem mélyen a HTML-kódba van írva úgy, hogy az állítmányhoz használandó számot nagyon nehéz meghatározni, akkor használhatjuk az elem egyedi attribútumait Selenium táblázat elemet kap.
- Az attribútumok predikátumként használatosak úgy, hogy előtagjukat a @ szimbólummal látják el.
- Használja az Inspect Element elemet a WebTable in eléréséhez Selenium