Dünaamiliste veebitabelite käsitsemine seleeni WebDriveri abil

Lang L: none (table-of-contents):

Anonim

Veebilehel avaldatakse kahte tüüpi HTML-tabeleid

  1. Staatilised tabelid : andmed on staatilised, st ridade ja veergude arv on fikseeritud.
  2. Dünaamilised tabelid : andmed on dünaamilised, st ridade ja veergude arv EI OLE fikseeritud.

Nüüd õpime, kuidas seleenis dünaamilisi tabeleid käsitseda:

Allpool on näide toote Selenium for Sales dünaamilisest veebitabelist. Sisestuskuupäeva filtrite põhjal muudetakse ridade arvu. Niisiis, see on oma olemuselt dünaamiline.

Staatilise tabeli käsitsemine on lihtne, kuid seleenis olevate dünaamiliste tabelite käsitsemine on veidi keeruline, kuna read ja veerud pole konstantsed.

Selles õpetuses saate teada

  • X-Pathi kasutamine veebitabeli elementide leidmiseks
  • Näide: ridade ja veergude arvu toomine dünaamilisest veebitabelist
  • Näide: Dünaamilise tabeli konkreetse rea ja veeru lahtriväärtuse toomine
  • Näide: saate kõigi väärtuste maksimumi dünaamilise tabeli veerust
  • Näide: hankige kõik dünaamilise tabeli väärtused

X-Pathi kasutamine veebitabeli elementide leidmiseks

Enne veebielemendi leidmist mõistame kõigepealt-

Mis on veebielement?

Web elemendid on vaid HTML elemente nagu tekstikasti ripploendid nööpe esitada nupud jne Need HTML elemendid on kirjutatud start tag ja lõpeb lõpus tag.

Näiteks,

Minu esimene HTML-dokument

.

Sammud selle veebielemendi X-tee saamiseks, mille soovime leida.

1. toiming) minge Chrome'is saidile http://demo.guru99.com/test/web-table-element.php

Samm 2) Paremklõpsake veebielementi, mille x-tee tuleb tuua. Meie juhul paremklõpsake valikul „Ettevõte”. Kuvatakse järgmine ekraan -

Samm 3) Paremklõpsake esiletõstetud veebielementi ja valige suvand Kopeeri -> Kopeeri x-tee.

Samm 4) Elemendi leidmiseks kasutage Seleeni WebDriveris kopeeritud X-tee "// * [@ id =" leftcontainer "] / table / thead / tr / th [1]".

Näide: ridade ja veergude arvu toomine dünaamilisest veebitabelist

Kuigi seleenis on dünaamiline veebitabelite käitlemine, ei saa me selle ridade ja veergude arvu ennustada.

Kasutades Seleniumi veebidraiverit, leiame

  • Veebitabeli ridade ja veergude arv seleenis
  • X rea või Y veeru andmed.

Allpool on programm seleeni veebitabeli käitlemiseks ridade ja veergude koguarvu toomiseks:

import java.text.ParseException;import java.util.List;import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.chrome.ChromeDriver;avalik klass Noofrowsandcols {public staatiline void main (String [] args) viskab ParseException {WebDriver wd;System.setProperty ("veebidraiver.chrome.driver", "G: //chromedriver.exe");wd = uus ChromeDriver ();wd.get ("http://demo.guru99.com/test/web-table-element.php");// veergude nrNimekiri  col = wd.findElements (By.xpath (".//*[@ id = \" leftcontainer \ "] / table / thead / tr / th");System.out.println ("Veerude arv on: + col.size ());// ridade arvNimekiri  read = wd.findElements (By.xpath (".//*[@ id = 'leftcontainer'] / table / tbody / tr / td [1]")); System.out.println ("Ridade arv on: + read.size ()); wd.close (); }}  

Koodi selgitus:

  • Siin oleme esmalt kuulutanud veebidraiveri objekti "wd" ja initsialiseerinud selle kroomitud draiveriks.
  • Veerus "col" olevate veergude koguarvu kasutame loendit .
  • käsud findElements tagastab loendi KÕIKidest elementidest, mis vastavad määratud lokaatorile
  • kasutades findElements ja X-path // * [@ id = \ "leftcontainer \"] / table / thead / tr / th saame kõik veerud
  • Samamoodi kordame protsessi ridade jaoks.

Väljund:

Näide: Dünaamilise tabeli konkreetse rea ja veeru lahtriväärtuse toomine

Oletame peame 3 rd rida tabelis ja selle teise raku andmeid. Vaadake allolevat tabelit-

Ülaltoodud tabelis värskendatakse andmeid regulaarselt mõne aja pärast. Andmed, mida proovite hankida, erinevad ülaltoodud ekraanipildist. Kood jääb siiski samaks. Siin on proov programmi saada 3 rd rida ja 2 nd veeru andmeid.

import java.text.ParseException;import java.util.List;import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.chrome.ChromeDriver;import java.util.concurrent.TimeUnit;avalik klass RowandCell {public staatiline void main (String [] args) viskab ParseException {WebDriver wd;System.setProperty ("veebidraiver.chrome.driver", "G: //chromedriver.exe");wd = uus ChromeDriver ();wd.get ("http://demo.guru99.com/test/web-table-element.php");wd.manage (). timeout (). kaudselt Oota (20, TimeUnit.SECONDS);WebElement baseTable = wd.findElement (By.tagName ("tabel"));// Kolmanda tabelirea leidmiseksWebElement tableRow = baseTable.findElement (By.xpath ("// * [@ id = \" leftcontainer \ "] / table / tbody / tr [3]"));String rowtext = tableRow.getText ();System.out.println ("Tabeli kolmas rida: + reastekst);// 3. rea 2. veeru andmete saamiseksWebElement cellIneed = tableRow.findElement (By.xpath ("// * [@ id = \" leftcontainer \ "] / table / tbody / tr [3] / td [2]"));Stringi väärtusIneed = cellIneed.getText ();System.out.println ("Lahtri väärtus on: + väärtusVajalik);wd.close ();}}

Koodi selgitus:

  • Tabel asub lokaatori atribuudi "tagname" abil.
  • Kasutades XPath "// * [@ id = \" leftcontainer \ "] / laud / tbody / tr [3]" leida 3 rd rida ja saab selle tekst gettexti () funktsiooni
  • Kasutades XPath "// * [@ id = \" leftcontainer \ "] / laud / tbody / tr [3] / td [2]" leida 2. lahter 3 rd rida ja saab selle tekst gettexti () funktsiooni

Väljund :

Näide: saate kõigi väärtuste maksimumi dünaamilise tabeli veerust

Selles näites saame maksimaalselt kõik väärtused konkreetses veerus.

Vaadake järgmist tabelit -

Siin on kood

import java.text.ParseException;import java.util.List;import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.chrome.ChromeDriver;import java.text.NumberFormat;avalik klass MaxFromTable {public staatiline void main (String [] args) viskab ParseException {WebDriver wd;System.setProperty ("veebidraiver.chrome.driver", "G: //chromedriver.exe");wd = uus ChromeDriver ();wd.get ("http://demo.guru99.com/test/web-table-element.php");String max;topelt m = 0, r = 0;// Ei. veergude kohtaNimekiri  col = wd.findElements (By.xpath (".//*[@ id = 'leftcontainer'] / table / thead / tr / th");System.out.println ("Veergude koguarv on: + col.size ());// ridade arvNimekiri  read = wd.findElements (By.xpath (".//*[@id='leftcontainer']/table/tbody/tr/td[1]"); System.out.println ("Ridade koguarv on: + read.size ()); for (int i = 1; i  r) {r = m; }} System.out.println ("Praegune maksimaalne hind on: + r); }}  

Koodi selgitus:

  • Kroomitud draiveri abil leiame veebitabeli ja saame XPathi abil rea koguarvu.
  • Kasutades tsükli jaoks, kordame ridade koguarvu ja toome väärtused ükshaaval. Järgmise rea saamiseks kasutame XPathis (i + 1)
  • Me võrdleme vana väärtust uue väärtusega ja maksimaalne väärtus trükitakse tsükli lõpus

OutPut

Näide: hankige kõik dünaamilise tabeli väärtused

Mõelge järgmisele tabelile http://demo.guru99.com/test/table.html

Veergude arv igas reas on erinev.

Siin on rida number 1, 2 ja 4 3 lahtrit ja rida number 3 lahtrit ning rida number 5 1 lahtrit.

Peame saama kõigi lahtrite väärtused

Siin on kood:

import java.text.ParseException;import java.util.List;import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import java.util.concurrent.TimeUnit;import org.openqa.selenium.chrome.ChromeDriver;avalik klass NofRowsColmns {public staatiline void main (String [] args) viskab ParseException {WebDriver wd;System.setProperty ("veebidraiver.chrome.driver", "G: //chromedriver.exe");wd = uus ChromeDriver ();wd.manage (). timeout (). kaudselt Oota (5, TimeUnit.SECONDS);wd.get ("http://demo.guru99.com/test/table.html");// Tabeli leidmiseks.WebElement mytable = wd.findElement (By.xpath ("/ html / body / table / tbody"));// Tabeliridade leidmiseks.Loend  read_table = mytable.findElements (By.tagName ("tr"));// Tabeli ridade arvu arvutamiseks.int ridade arv = read_tabel.size ();// Loop käivitatakse kuni viimase tabelireani.for (int rida = 0; rida  Columns_row = rows_table.get (rida) .findElements (By.tagName ("td"));// Veergude (lahtrite) arvu arvutamiseks. Selles konkreetses reas.int veergude_arv = veergude_rida.suurus ();System.out.println ("Lahtrite arv reas" + rida + "on" + veergude_arv);// Loop käivitatakse selle konkreetse rea viimase lahtrini.for (int veerg = 0; veerg 

Koodi selgitus:

  • rows_count annab ridade koguarvu
  • iga rea ​​jaoks saame veergude koguarvu, kasutades rows_table.get (rida) .findElements (By.tagName ("td"));
  • Kordame läbi iga veeru ja iga rea ​​ning toome väärtused.

Väljund :

Kokkuvõte

  • By.xpath () kasutatakse tavaliselt tabeli elementidele juurdepääsemiseks.
  • Seleeni staatilised veebitabelid on oma olemuselt järjepidevad. st neil on nii kindel arv ridu kui ka lahtriandmeid.
  • Dünaamilised veebitabelid on vastuolulised, st neil pole fikseeritud arvu ridu ja lahtrite andmeid.
  • Seleeni veebidraiveri abil saame dünaamiliste veebitabelitega hõlpsasti hakkama.
  • Selenium Webdriver võimaldab meil pääseda juurde dünaamilistele veebitabelitele nende X-tee kaudu

Artikli autor on Kanchan Kulkarni.