Dynaamisten verkkopöytien käsittely Selenium WebDriver -ohjelmalla

Sisällysluettelo:

Anonim

Web-sivustossa julkaistaan ​​kahden tyyppisiä HTML-taulukoita

  1. Staattiset taulukot : Tiedot ovat staattisia eli rivien ja sarakkeiden määrä on kiinteä.
  2. Dynaamiset taulukot : Tiedot ovat dynaamisia, ts. Rivien ja sarakkeiden lukumäärä EI OLE kiinteä.

Opimme nyt käsittelemään dynaamista taulukkoa Seleniumissa:

Alla on esimerkki Selenium for Salesin dynaamisesta verkkotaulukosta. Syöttöpäivämäärän suodattimien perusteella rivien määrää muutetaan. Joten se on luonteeltaan dynaaminen.

Staattisen taulukon käsittely on helppoa, mutta dynaamisten taulukoiden käsittely Seleniumissa on hieman vaikeaa, koska rivit ja sarakkeet eivät ole vakioita.

Tässä opetusohjelmassa opit-

  • X-polun käyttäminen Web-taulukon elementtien löytämiseen
  • Esimerkki: Hae rivien ja sarakkeiden määrä Dynamic WebTable -taulukosta
  • Esimerkki: Hae tietyn dynaamisen taulukon rivin ja sarakkeen solun arvo
  • Esimerkki: Hanki kaikki arvot dynaamisen taulukon sarakkeesta
  • Esimerkki: Hae kaikki dynaamisen taulukon arvot

X-polun käyttäminen Web-taulukon elementtien löytämiseen

Ennen kuin löydämme verkkoelementin, ymmärretään ensin

Mikä on verkkoelementti?

Web elementit ovat vain HTML-elementtejä, kuten oppikirja, dropdowns valintapainikkeet, lähetä napit jne Nämä HTML-elementtien kirjoitetaan alun tag ja päättyy päähän tunniste.

Esimerkiksi,

Ensimmäinen HTML-dokumenttini

.

Vaiheet X-polun saamiseksi verkkoelementistä, jonka haluamme löytää.

Vaihe 1) Siirry Chromessa osoitteeseen http://demo.guru99.com/test/web-table-element.php

Vaihe 2) Napsauta hiiren kakkospainikkeella verkkoelementtiä, jonka x-polku on haettava. Meidän tapauksessamme napsauta hiiren oikealla painikkeella "Yritys" Valitse Tarkasta-vaihtoehto. Seuraava näyttö tulee näkyviin -

Vaihe 3) Napsauta hiiren kakkospainikkeella korostettua verkkoelementtiä> Valitse Kopioi -> Kopioi x-polku -vaihtoehto.

Vaihe 4) Etsi elementti Selenium WebDriverin kopioidulla X-polulla "// * [@ id =" leftcontainer "] / table / thead / tr / th [1]".

Esimerkki: Hae rivien ja sarakkeiden määrä Dynamic WebTable -taulukosta

Dynaamisen verkkotaulukon käsittelyn aikana Seleniumissa emme voi ennustaa sen rivien ja sarakkeiden määrää.

Selenium-verkkoajurin avulla voimme löytää

  • Selenium-verkkotaulukon rivien ja sarakkeiden määrä
  • X rivin tai Y sarakkeen tiedot.

Alla on ohjelma rivien ja sarakkeiden kokonaismäärän noutamiseksi seleniumin verkkotaulukon käsittelyä varten:

tuo java.text.ParseException;tuo java.util.List;tuo org.openqa.selenium.By;tuo org.openqa.selenium.WebDriver;tuonti org.openqa.selenium.WebElement;tuo org.openqa.selenium.chrome.ChromeDriver;julkinen luokka Noofrowsandcols {public static void main (String [] args) heittää ParseException {WebDriver wd;System.setProperty ("webdriver.chrome.driver", "G: //chromedriver.exe");wd = uusi ChromeDriver ();wd.get ("http://demo.guru99.com/test/web-table-element.php");// Sarakkeiden nroLista  col = wd.findElements (By.xpath (".//*[@ id = \" leftcontainer \ "] / table / thead / tr / th"));System.out.println ("Colien lukumäärä on: + col.size ());//Rivejä eiLista  rivit = wd.findElements (By.xpath (".//*[@ id = 'leftcontainer'] / table / tbody / tr / td [1]"); System.out.println ("Rivejä on: + rivejä.koko ()); wd.close (); }}  

Koodin selitys:

  • Tässä olemme ensin julistaneet Web-ohjainobjektin "wd" ja alustaneet sen kromi-ohjaimeksi.
  • Luettelossa käytetään sarakkeiden kokonaismäärää sarakkeessa "col".
  • findElements-komennot palauttaa luettelon KAIKISTA määritettyä paikanninta vastaavista elementeistä
  • käyttämällä findElements ja X-polku // * [@ id = \ "leftcontainer \"] / table / thead / tr / th saamme kaikki sarakkeet
  • Vastaavasti toistamme prosessin riveille.

Tuotos:

Esimerkki: Hae tietyn dynaamisen taulukon rivin ja sarakkeen solun arvo

Oletetaan, meidän 3 kolmannen rivin taulukossa ja toisen solun tiedot. Katso alla oleva taulukko-

Yllä olevassa taulukossa tiedot päivitetään säännöllisesti jonkin ajan kuluttua. Noutamasi tiedot eroavat yllä olevasta kuvakaappauksesta. Koodi pysyy kuitenkin samana. Tässä on näyte ohjelma saada 3 rd rivi- ja 2 toisen sarakkeen tiedot.

tuo java.text.ParseException;tuo java.util.List;tuo org.openqa.selenium.By;tuo org.openqa.selenium.WebDriver;tuonti org.openqa.selenium.WebElement;tuo org.openqa.selenium.chrome.ChromeDriver;tuo java.util.concurrent.TimeUnit;julkinen luokka RowandCell {public static void main (String [] args) heittää ParseException {WebDriver wd;System.setProperty ("webdriver.chrome.driver", "G: //chromedriver.exe");wd = uusi ChromeDriver ();wd.get ("http://demo.guru99.com/test/web-table-element.php");wd.manage (). aikakatkaisut (). implisiittisesti Odota (20, TimeUnit.SECONDS);WebElement baseTable = wd.findElement (By.tagName ("taulukko"));// Löydetään kolmas taulukkoriviWebElement tableRow = baseTable.findElement (By.xpath ("// * [@ id = \" leftcontainer \ "] / table / tbody / tr [3]"));Merkkijono riviteksti = tableRow.getText ();System.out.println ("Taulukon kolmas rivi: + riviteksti);// saadaksesi kolmannen rivin 2. sarakkeen tiedotWebElement cellIneed = tableRow.findElement (By.xpath ("// * [@ id = \" leftcontainer \ "] / table / tbody / tr [3] / td [2]"));Merkkijonon arvoIneed = cellIneed.getText ();System.out.println ("Solun arvo on: + valueIneed);wd.close ();}}

Koodin selitys:

  • Taulukko sijaitsee paikannusominaisuuden "tagname" avulla.
  • Käyttämällä XPath "// * [@ id = \" leftcontainer \ "] / pöytä / tbody / tr [3]" löytää 3 kolmannen rivin ja saa sen tekstiä gettext () funktio
  • Käyttäen Xpath "// * [@ id = \" leftcontainer \ "] / pöytä / tbody / tr [3] / td [2]" löytää 2. solu 3 kolmannen rivin ja saa sen tekstiä gettext () funktio

Tuotos :

Esimerkki: Hanki kaikki arvot dynaamisen taulukon sarakkeesta

Tässä esimerkissä saamme maksimiarvon kaikista tietyn sarakkeen arvoista.

Katso seuraava taulukko -

Tässä on koodi

tuo java.text.ParseException;tuo java.util.List;tuo org.openqa.selenium.By;tuo org.openqa.selenium.WebDriver;tuonti org.openqa.selenium.WebElement;tuo org.openqa.selenium.chrome.ChromeDriver;tuo java.text.NumberFormat;julkinen luokka MaxFromTable {public static void main (String [] args) heittää ParseException {WebDriver wd;System.setProperty ("webdriver.chrome.driver", "G: //chromedriver.exe");wd = uusi ChromeDriver ();wd.get ("http://demo.guru99.com/test/web-table-element.php");Merkkijono max;kaksinkertainen m = 0, r = 0;//Ei. sarakkeistaLista  col = wd.findElements (By.xpath (".//*[@ id = 'leftcontainer'] / table / thead / tr / th"));System.out.println ("Sarakkeiden kokonaismäärä on: + col.size ());//Rivejä eiLista  rivit = wd.findElements (By.xpath (".//*[@id='leftcontainer']/table/tbody/tr/td[1]"); System.out.println ("Rivejä yhteensä: + rivejä.koko ()); for (int i = 1; i  r) {r = m; }} System.out.println ("Nykyinen enimmäishinta on: + r); }}  

Koodin selitys:

  • Kromiohjaimen avulla löydämme verkkotaulukon ja haemme rivien kokonaismäärän XPath: lla ".//*[@id='leftcontainer']/table/tbody/tr/td[1]"
  • Silmukkaa varten iteroidaan rivien kokonaismäärä ja haetaan arvot yksi kerrallaan. Seuraavan rivin saamiseksi käytämme (i + 1) XPathissa
  • Verrataan vanhaa arvoa uuteen arvoon ja maksimiarvo tulostetaan silmukan loppuun

OutPut

Esimerkki: Hae kaikki dynaamisen taulukon arvot

Harkitse seuraavaa taulukkoa: http://demo.guru99.com/test/table.html

Kunkin rivin sarakkeiden määrä on erilainen.

Tässä rivillä numero 1, 2 ja 4 on 3 solua ja rivillä 3 on 2 solua ja rivillä 5 solu.

Meidän on saatava kaikkien solujen arvot

Tässä on koodi:

tuo java.text.ParseException;tuo java.util.List;tuo org.openqa.selenium.By;tuo org.openqa.selenium.WebDriver;tuonti org.openqa.selenium.WebElement;tuo java.util.concurrent.TimeUnit;tuo org.openqa.selenium.chrome.ChromeDriver;julkinen luokka NofRowsColmns {public static void main (String [] args) heittää ParseException {WebDriver wd;System.setProperty ("webdriver.chrome.driver", "G: //chromedriver.exe");wd = uusi ChromeDriver ();wd.manage (). aikakatkaisut (). implisiittisesti Odota (5, TimeUnit.SECONDS);wd.get ("http://demo.guru99.com/test/table.html");// Etsi taulukko.WebElement mytable = wd.findElement (By.xpath ("/ html / body / table / tbody"));// Paikanna taulukkorivit.Luettelo  rivit_taulukko = mytable.findElements (By.tagName ("tr"));// Lasketaan taulukon rivien lukumäärä.int rivit_määrä = rivit_taulukko.koko ();// Loop suoritetaan viimeiseen taulukkoriviin asti.varten (int rivi = 0; rivi  Sarakkeet_rivi = rivit_taulukko.get (rivi) .findElements (By.tagName ("td"));// Lasketaan sarakkeiden (solujen) lukumäärä. Kyseisellä rivillä.int sarakkeiden_määrä = Sarakkeiden_rivi.koko ();System.out.println ("Solun lukumäärä rivillä" + rivi + "ovat" + sarakkeiden lukumäärä);// Loop suoritetaan kyseisen rivin viimeiseen soluun asti.for (int sarake = 0; sarake 

Koodin selitys:

  • rows_count antaa rivien kokonaismäärän
  • kullekin riville saadaan sarakkeiden kokonaismäärä käyttämällä rows_table.get (rivi) .findElements (By.tagName ("td"));
  • Toistamme jokaisen sarakkeen ja jokaisen rivin läpi ja haemme arvot.

Tuotos :

Yhteenveto

  • By.xpath (): ta käytetään yleisesti taulukon elementtien käyttämiseen.
  • Seleenin staattiset verkkotaulukot ovat luonteeltaan yhtenäisiä. eli niillä on kiinteä määrä rivejä sekä solutiedot.
  • Dynaamiset verkkotaulukot ovat epäjohdonmukaisia, ts. Niillä ei ole kiinteää määrää rivejä ja solutietoja.
  • Seleeni-web-ohjainta käyttämällä voimme käsitellä dynaamisia verkkotaulukoita helposti.
  • Selenium Webdriver antaa meille mahdollisuuden käyttää dynaamisia verkkotaulukoita niiden X-polulla

Artikkelin on kirjoittanut Kanchan Kulkarni.