Web-taulukon käsitteleminen Selenium web-ajuri
Missä Web-taulukko on Selenium?
A Verkkotaulukko in Selenium on WebElement, jota käytetään tietojen tai informaation taulukkomuodossa. Näytettävät tiedot voivat olla joko staattisia tai dynaamisia. Verkkotaulukkoon ja sen elementteihin pääsee käsiksi käyttämällä WebElement-toimintoja ja paikantimia Selenium. Tyypillinen esimerkki verkkotaulukosta olisi sähköisen kaupankäynnin alustalla näkyvät tuotetiedot.
HTML-verkkotaulukon lukeminen
Joskus meidän on käytettävä elementtejä (yleensä tekstejä), jotka ovat HTML-taulukoissa. On kuitenkin hyvin harvoin web-suunnittelija antaa id- tai name-attribuuttia taulukon tiettyyn soluun. Siksi emme voi käyttää tavallisia menetelmiä, kuten "By.id()", "By.name()" tai "By.cssSelector()". Tässä tapauksessa luotettavin vaihtoehto on käyttää niitä "By.xpath()" -menetelmällä.
Web-taulukon käsitteleminen Selenium
Harkitse alla olevaa HTML-koodia verkkotaulukoiden käsittelemiseen Selenium.
Käytämme XPath saada tekstin "neljäs solu" sisältävän solun sisäteksti.
Vaihe 1 – Aseta yläelementti (taulukko)
XPath-paikantimet WebDriverissa alkavat aina kaksinkertaisella vinoviivalla "//" ja sen jälkeen pääelementillä. Koska käsittelemme verkkotaulukoita Selenium, pääelementin tulee aina olla tag. Ensimmäinen osa meidän Selenium XPath-taulukkopaikantimen tulisi siksi alkaa "//table".
Vaihe 2 – Lisää alatason elementit
Elementti heti alla On joten voimme sanoa sen on "lapsi". . Ja myös, on "vanhempi". . Kaikki XPathin alielementit sijoitetaan yläelementin oikealle puolelle ja erotetaan yhdellä vinoviivalla "/" alla olevan koodin mukaisesti.
Vaihe 3 – Lisää predikaatit
The elementti sisältää kaksi tunnisteet. Voimme nyt sanoa, että nämä kaksi tunnisteet ovat "lapsia". . Näin ollen voimme sanoa niin on molempien vanhempi elementtejä.
Toinen asia, jonka voimme päätellä, on, että nämä kaksi elementit ovat sisaruksia. Sisarukset viittaavat lapsielementteihin, joilla on sama vanhempi.
Päästäksesi kohteeseen haluamme käyttää (se, jossa on teksti "neljäs solu"), meidän on ensin käytettävä toinen eikä ensimmäinen. Jos kirjoitamme yksinkertaisesti "//table/tbody/tr", pääsemme ensimmäiseen tag.
Joten, miten pääsemme toiseen sitten? Vastaus tähän on käyttää Predikaatit.
Predikaatit ovat numeroita tai HTML-attribuutteja, jotka on suljettu hakasulkeisiin "[ ]", jotka erottavat alielementin sen sisaruksista.. Koska meidän täytyy päästä on toinen, käytämme predikaattina "[2]".
Jos emme käytä predikaattia, XPath käyttää ensimmäistä sisarusta. Siksi voimme käyttää ensimmäistä käyttämällä jompaakumpaa näistä XPath-koodeista.
Vaihe 4 – Lisää seuraavat lapsielementit käyttämällä sopivia predikaatteja
Seuraava elementti, johon meidän on käytettävä, on toinen . Käytämme vaiheista 2 ja 3 oppimiamme periaatteita ja viimeistelemme XPath-koodimme alla olevan kaltaiseksi.
Nyt kun meillä on oikea XPath-paikannus, voimme jo käyttää haluamaamme solua ja saada sen sisäisen tekstin alla olevan koodin avulla. Se olettaa, että olet tallentanut yllä olevan HTML-koodin nimellä "newhtml.html" C-asemaan.
public static void main(String[] args) { String baseUrl = "http://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(); } }
Sisäkkäisten taulukoiden käyttäminen
Samat edellä käsitellyt periaatteet koskevat sisäkkäisiä taulukoita. Sisäkkäiset taulukot ovat toisen taulukon sisällä olevia pöytiä. Alla on esimerkki.
Päästäksemme soluun, jossa on teksti "4-5-6" käyttämällä "//vanhempi/lapsi"- ja predikaattikäsitteitä edellisestä osasta, meidän pitäisi pystyä keksimään alla oleva XPath-koodi.
Alla olevan WebDriver-koodin pitäisi pystyä hakemaan solun sisäteksti, jota käytämme.
public static void main(String[] args) { String baseUrl = "http://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(); }
Alla oleva tuloste vahvistaa, että sisäisen taulukon käyttö onnistui.
Attribuuttien käyttäminen predikaatteina
Jos elementti on kirjoitettu syvälle HTML-koodiin siten, että predikaatille käytettävää numeroa on erittäin vaikea määrittää, voimme käyttää sen sijaan elementin ainutlaatuista attribuuttia.
Alla olevassa esimerkissä "New Yorkista Chicagoon" -solu sijaitsee syvällä Mercury Toursin etusivun HTML-koodi.
Tässä tapauksessa voimme käyttää taulukon ainutlaatuista attribuuttia (width=”270″) predikaattina. Attribuutteja käytetään predikaatteina lisäämällä niiden eteen @-symboli. Yllä olevassa esimerkissä "New Yorkista Chicagoon" -solu sijaitsee ensimmäisessä neljännestä , joten XPathimme pitäisi olla alla olevan kuvan mukainen.
Muista tämä, kun laitamme XPath-koodin Java, meidän tulee käyttää estomerkkiä taaksepäin vinoviivaa "\" lainausmerkeissä "270":n molemmilla puolilla, jotta By.xpath():n merkkijonoargumentti ei pääty ennenaikaisesti.
Olemme nyt valmiita käyttämään tätä solua alla olevan koodin avulla.
public static void main(String[] args) { String baseUrl = "http://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(); }
Pikanäppäin: Käytä tarkastuselementtiä päästäksesi sisään taulukoihin Selenium
Jos elementin numero tai attribuutti on erittäin vaikea tai mahdoton saada, nopein tapa luoda XPath-koodi on käyttää Inspect Element -toimintoa.
Harkitse alla olevaa esimerkkiä Mercury Tours kotisivut.
Vaihe 1
Käytä Firebugia saadaksesi XPath-koodin.
Vaihe 2
Etsi ensimmäinen "taulukon" pääelementti ja poista kaikki sen vasemmalla puolella.
Vaihe 3
Kiinnitä koodin jäljellä oleva osa eteen kaksoisvinoviivalla “//” ja kopioi se WebDriver-koodiisi.
Alla oleva WebDriver-koodi pystyy noutamaan onnistuneesti käyttämämme elementin sisäisen tekstin.
public static void main(String[] args) { String baseUrl = "http://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(); }
Yhteenveto
- By.xpath() on yleisesti käytetty WebTablein elementtien käyttämiseen Selenium.
- Jos elementti on kirjoitettu syvälle HTML-koodiin siten, että predikaatille käytettävää numeroa on erittäin vaikea määrittää, voimme käyttää elementin ainutlaatuista attribuuttia sen sijaan Selenium hanki pöytäelementti.
- Attribuutteja käytetään predikaatteina lisäämällä niiden eteen @-symboli.
- Käytä Inspect Elementiä päästäksesi WebTable-sovellukseen Selenium