Kuinka käsitellä Web-taulukkoa Selenium WebDriver -ohjelmassa

Sisällysluettelo:

Anonim

HTML-verkkotaulukon lukeminen

Joskus meidän on käytettävä HTML-taulukoissa olevia elementtejä (yleensä tekstejä). Web-suunnittelijan on kuitenkin hyvin harvoin annettava tunnus tai nimi-attribuutti tietylle taulukon solulle. 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ä.

Tässä opetusohjelmassa opit-

  • Kuinka kirjoittaa XPath taulukkoon
  • Sisäkkäisten taulukoiden käyttö
  • Attribuuttien käyttäminen predikaateina
  • Pikanäppäin: Käytä Tarkasta elementtiä seleniumin pöytiä varten

Kuinka kirjoittaa XPath taulukkoon

Harkitse alla olevaa HTML-koodia.

Käytämme XPathia saadaksemme solun sisäisen tekstin, joka sisältää tekstin "neljäs solu".

Vaihe 1 - Aseta ylätason elementti (taulukko)

WebDriverin XPath-paikannimet alkavat aina kaksinkertaisella eteenpäin viivalla "//" ja sen jälkeen peruselementillä . Koska olemme tekemisissä taulukoiden kanssa, emoelementin tulisi aina olla

-tunniste. XPath-paikannimen ensimmäisen osan pitäisi sen vuoksi alkaa "// taulukolla".

Vaihe 2 - Lisää alielementit

Välittömästi

-alueen alkuelementti on , joten voimme sanoa, että on
-alueen "lapsi". Ja
on "vanhempi". Kaikki XPath-alatason elementit sijoitetaan vanhemman elementin oikealle puolelle erotettuna yhdellä eteenpäin viivalla "/" kuten alla oleva koodi.

Vaihe 3 - Lisää predikaatit

Elementti

sisältää kaksi -tagia. Voimme nyt sanoa, että nämä kaksi -tagia ovat : n "lapsia". Näin ollen voimme sanoa, että on molempien -elementtien vanhempi.

Toinen asia, jonka voimme päätellä, on, että kaksi

-elementtiä ovat sisaruksia. Sisarukset tarkoittavat lapsielementtejä, joilla on sama vanhempi .

Päästäksesi haluamaasi

eikä ensimmäistä. Jos kirjoitamme yksinkertaisesti "// table / tbody / tr", pääsemme ensimmäiseen -tagiin.

Joten miten voimme käyttää toista

sitten? Vastaus tähän on käyttää predikaatteja .

Predikaatit ovat numeroita tai HTML-määritteitä, jotka on suljettu hakasulkeisiin "[]", jotka erottavat lapsielementin sisaruksistaan . Koska

, jota meidän on käytettävä, 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ä kumpaakin näistä XPath-koodeista.

Vaihe 4 - Lisää menestyvät lapsielementit sopivilla predikaateilla

Seuraava elementti, jota meidän on käytettävä, on toinen

ensimmäisessä
-kohtaan (johon on teksti "neljäs solu"), meidän on ensin käytettävä toista
. Sovellamme vaiheista 2 ja 3 oppimiemme periaatteiden mukaisesti viimeistelemme XPath-koodin olevan alla olevan kaltainen.

Nyt kun meillä on oikea XPath-paikannin, voimme jo päästä haluamaasi soluun ja saada sen sisäisen tekstin alla olevan koodin avulla. Siinä oletetaan, että olet tallentanut yllä olevan HTML-koodin nimellä "newhtml.html" C-asemaan.

public staattinen void main (String [] argumentoi) {Merkkijono baseUrl = "http://demo.guru99.com/test/write-xpath-table.html";WebDriver-ohjain = uusi FirefoxDriver ();driver.get (baseUrl);Merkkijono internalText = driver.findElement (By.xpath ("// taulukko / tbody / tr [2] / td [2]")). GetText ();System.out.println (innerText);kuljettaja. lopeta ();}}

Sisäkkäisten taulukoiden käyttö

Samat periaatteet, joita on käsitelty edellä, koskevat sisäkkäisiä taulukoita. Sisäkkäiset taulukot ovat taulukoita, jotka sijaitsevat toisessa taulukossa . Alla on esimerkki.

Jotta pääsisimme soluun tekstillä "4-5-6" käyttämällä edellisen osan "// vanhempi / lapsi" ja predikaattikäsitteitä, meidän pitäisi pystyä keksimään alla oleva XPath-koodi.

Alla olevan WebDriver-koodin pitäisi pystyä noutamaan käyttämämme solun sisempi teksti.

public staattinen void main (String [] argumentoi) {Merkkijono baseUrl = "http://demo.guru99.com/test/accessing-nested-table.html";WebDriver-ohjain = uusi FirefoxDriver ();driver.get (baseUrl);Merkkijono internalText = driver.findElement (By.xpath ("// taulukko / tbody / tr [2] / td [2] / taulukko / tbody / tr / td [2]")). GetText ();System.out.println (innerText);kuljettaja. lopeta ();}

Alla oleva lähtö vahvistaa, että sisätaulukkoon oli päästy.

Attribuuttien käyttäminen predikaateina

Jos elementti on kirjoitettu syvälle HTML-koodiin siten, että predikaatille käytettävää lukua on erittäin vaikea määrittää, voimme käyttää sen sijaan kyseisen elementin ainutlaatuista määritettä.

Alla olevassa esimerkissä "New York - Chicago" -solu sijaitsee syvällä Mercury Toursin kotisivun HTML-koodissa.

Tässä tapauksessa voimme käyttää taulukon yksilöllistä määritettä (leveys = "270") predikaattina. Määritteitä käytetään predikaatteina etuliittämällä ne @ -merkkiin . Yllä olevassa esimerkissä "New York - Chicago" -solu sijaitsee neljännen

, joten XPath-matkansa tulisi olla alla esitetty.

Muista, että kun laitamme XPath-koodin Javaan, meidän tulisi käyttää pakomerkkiä taaksepäin kauttaviivalla "\" kaksoislainausmerkeissä "270": n molemmilla puolilla, jotta By.xpath (): n merkkijono-argumenttia ei lopeteta ennenaikaisesti .

Olemme nyt valmiita käyttämään kyseistä solua alla olevan koodin avulla.

public staattinen void main (String [] argumentoi) {Merkkijono baseUrl = "http://demo.guru99.com/test/newtours/";WebDriver-ohjain = uusi FirefoxDriver ();driver.get (baseUrl);Merkkijono internalText = driver.findElement (Tekijä.xpath ("// taulukko [@width = \" 270 \ "] / tbody / tr [4] / td")).getText ();System.out.println (innerText);kuljettaja. lopeta ();}

Pikanäppäin: Käytä Tarkasta elementtiä seleniumin pöytiä varten

Jos elementin lukumäärää tai määritettä on erittäin vaikea tai mahdoton saada, nopein tapa luoda XPath-koodi on tarkastaa elementti.

Harkitse alla olevaa esimerkkiä Mercury Toursin kotisivulta.

Vaihe 1

Hanki XPath-koodi Firebugin avulla.

Vaihe 2

Etsi ensimmäinen "taulukko" -elementti ja poista kaikki sen vasemmalta puolelta.

Vaihe 3

Etuliitä koodin jäljellä oleva osa kaksinkertaisella eteenpäin viivalla "//" ja kopioi se WebDriver-koodiin.

Alla oleva WebDriver-koodi pystyy noutamaan käyttämämme elementin sisemmän tekstin.

public staattinen void main (String [] argumentoi) {Merkkijono baseUrl = "http://demo.guru99.com/test/newtours/";WebDriver-ohjain = uusi FirefoxDriver ();driver.get (baseUrl);Merkkijono internalText = driver.findElement (Tekijä.xpath ("// taulukko / tbody / tr / td [2]"+ "// taulukko / tbody / tr [4] / td /"+ "taulukko / tbody / tr / td [2] /"+ "taulukko / tbody / tr [2] / td [1] /"+ "taulukko [2] / tbody / tr [3] / td [2] / fontti")).getText ();System.out.println (innerText);kuljettaja. lopeta ();}

Yhteenveto

  • By.xpath (): ta käytetään yleisesti taulukon elementtien käyttämiseen.
  • Jos elementti on kirjoitettu syvälle HTML-koodiin siten, että predikaatille käytettävää lukua on erittäin vaikea määrittää, voimme käyttää sen sijaan kyseisen elementin ainutlaatuista määritettä.
  • Määritteitä käytetään predikaatteina etuliittämällä ne @ -merkkiin.
  • Käytä Seleenin pöytiä tarkastamalla elementtiä