Ravnanje z dinamičnimi spletnimi mizami s pomočjo programa Selenium WebDriver

Kazalo:

Anonim

Na spletu sta objavljeni dve vrsti tabel HTML -

  1. Statične tabele : Podatki so statični, tj. Število vrstic in stolpcev je določeno.
  2. Dinamične tabele : Podatki so dinamični, tj. Število vrstic in stolpcev NI določeno.

Zdaj se bomo naučili, kako ravnati z dinamično tabelo v selenu:

Spodaj je primer dinamične spletne tabele v programu Selenium za prodajo. Glede na vhodne filtre za datum se bo število vrstic spremenilo. Torej je dinamične narave.

Ravnanje s statično tabelo je enostavno, vendar je ravnanje z dinamičnimi tabelami v seleniju nekoliko težavno, saj vrstice in stolpci niso konstantni.

V tej vadnici boste izvedeli-

  • Uporaba X-Path za iskanje elementov spletne tabele
  • Primer: Pridobite število vrstic in stolpcev iz Dynamic WebTable
  • Primer: Pridobi vrednost celice določene vrstice in stolpca dinamične tabele
  • Primer: Pridobite največ vseh vrednosti v stolpcu dinamične tabele
  • Primer: Pridobite vse vrednosti dinamične tabele

Uporaba X-Path za iskanje elementov spletne tabele

Preden poiščemo spletni element, najprej razumemo -

Kaj je spletni element?

Spletni elementi niso nič drugega kot elementi HTML, kot so besedilo, spustni gumbi, gumbi za oddajo itd. Ti elementi HTML so zapisani z začetno oznako in končajo s končno oznako.

Na primer,

Moj prvi dokument HTML

.

Koraki za pridobivanje poti X spletnega elementa, ki ga želimo poiskati.

1. korak) V Chromu pojdite na http://demo.guru99.com/test/web-table-element.php

Korak 2) Z desno miškino tipko kliknite spletni element, katerega pot x je treba pridobiti. V našem primeru z desno miškino tipko kliknite "Podjetje". Izberite možnost Pregled. Prikaže se naslednji zaslon -

Korak 3) Z desno miškino tipko kliknite označeni spletni element> Izberite Kopiraj -> Kopiraj možnost x-path.

Korak 4) S pomočjo kopirane poti X "// * [@ id =" leftcontainer "] / table / thead / tr / th [1]" v programu Selenium WebDriver poiščite element.

Primer: Pridobite število vrstic in stolpcev iz Dynamic WebTable

Medtem ko dinamično ravnanje s spletnimi tabelami v programu Selenium ne more predvideti števila vrstic in stolpcev.

Z uporabo spletnega gonilnika Selenium lahko najdemo

  • Število vrstic in stolpcev spletne tabele v seleniju
  • Podatki o vrstici X ali stolpcu Y

Spodaj je program za pridobivanje skupnega števila vrstic in stolpcev za obdelavo spletne tabele v seleniju:

uvoz java.text.ParseException;uvoz java.util.List;uvoz org.openqa.selenium.By;uvoz org.openqa.selenium.WebDriver;uvoz org.openqa.selenium.WebElement;uvoz org.openqa.selenium.chrome.ChromeDriver;javni razred Noofrowsandcols {public static void main (String [] args) vrže ParseException {WebDriver wd;System.setProperty ("webdriver.chrome.driver", "G: //chromedriver.exe");wd = nov ChromeDriver ();wd.get ("http://demo.guru99.com/test/web-table-element.php");// Št. StolpcevSeznam  col = wd.findElements (By.xpath (".//*[@ id = \" leftcontainer \ "] / table / thead / tr / th"));System.out.println ("Število stolpcev je: + col.size ());// Št. VrsticSeznam  vrstice = wd.findElements (By.xpath (".//*[@ id = 'leftcontainer'] / table / tbody / tr / td [1]")); System.out.println ("Število vrstic je: + row.size ()); wd.close (); }}  

Razlaga kode:

  • Tu smo najprej razglasili objekt spletnega gonilnika "wd" in ga inicializirali v chrome driver.
  • Seznam uporabljamo za skupno število stolpcev v "col".
  • ukazi findElements vrnejo seznam VSEH elementov, ki se ujemajo z določenim lokatorjem
  • z uporabo findElements in X-poti // * [@ id = \ "leftcontainer \"] / table / thead / tr / th dobimo vse stolpce
  • Podobno ponovimo postopek za vrstice.

Izhod:

Primer: Pridobi vrednost celice določene vrstice in stolpca dinamične tabele

Predpostavimo, da potrebujemo 3 rd vrstico tabele in podatke, njen drugi celice. Glej spodnjo tabelo -

V zgornji tabeli se podatki redno posodabljajo po določenem času. Podatki, ki jih poskusite pridobiti, se bodo razlikovali od zgornjega posnetka zaslona. Vendar koda ostaja enaka. Tukaj je vzorec program, da bi dobili 3 rd vrstico in 2 ND podatke stolpcu je.

uvoz java.text.ParseException;uvoz java.util.List;uvoz org.openqa.selenium.By;uvoz org.openqa.selenium.WebDriver;uvoz org.openqa.selenium.WebElement;uvoz org.openqa.selenium.chrome.ChromeDriver;uvoz java.util.concurrent.TimeUnit;javni razred RowandCell {public static void main (String [] args) vrže ParseException {WebDriver wd;System.setProperty ("webdriver.chrome.driver", "G: //chromedriver.exe");wd = nov ChromeDriver ();wd.get ("http://demo.guru99.com/test/web-table-element.php");wd.manage (). timeouts (). implicitnoWait (20, TimeUnit.SECONDS);WebElement baseTable = wd.findElement (By.tagName ("tabela"));// Za iskanje tretje vrstice tabeleWebElement tableRow = baseTable.findElement (By.xpath ("// * [@ id = \" leftcontainer \ "] / table / tbody / tr [3]"));Niz rowtext = tableRow.getText ();System.out.println ("Tretja vrstica tabele: + besedilo vrstice);// za pridobitev podatkov iz 2. stolpca 3. vrsticeWebElement cellIneed = tableRow.findElement (By.xpath ("// * [@ id = \" leftcontainer \ "] / table / tbody / tr [3] / td [2]"));Niz valueIneed = cellIneed.getText ();System.out.println ("Vrednost celice je: + valueIneed);wd.close ();}}

Razlaga kode:

  • Tabela se nahaja z uporabo lastnosti lokatorja "tagname".
  • Z "* [@ id = \ //" leftcontainer \ "] tabela / tbody / TR / [3]" našli 3 XPath rd vrstico in dobi svojo besedila s Gettext funkcijo ()
  • Z "* [@ id = \ //" leftcontainer \ "] / tbody / TR namiznega / [3] / td [2]" xPath najdejo 2. celico 3 rd funkcijo zapored postane njena besedila z gettext ()

Izhod :

Primer: Pridobite največ vseh vrednosti v stolpcu dinamične tabele

V tem primeru bomo dobili največ vseh vrednosti v določenem stolpcu.

Glejte naslednjo tabelo -

Tu je koda

uvoz java.text.ParseException;uvoz java.util.List;uvoz org.openqa.selenium.By;uvoz org.openqa.selenium.WebDriver;uvoz org.openqa.selenium.WebElement;uvoz org.openqa.selenium.chrome.ChromeDriver;uvoz java.text.NumberFormat;javni razred MaxFromTable {public static void main (String [] args) vrže ParseException {WebDriver wd;System.setProperty ("webdriver.chrome.driver", "G: //chromedriver.exe");wd = nov ChromeDriver ();wd.get ("http://demo.guru99.com/test/web-table-element.php");String max;dvojno m = 0, r = 0;// št. stolpcevSeznam  col = wd.findElements (By.xpath (".//*[@ id = 'leftcontainer'] / table / thead / tr / th"));System.out.println ("Skupno število stolpcev je: + col.size ());// Št. VrsticSeznam  vrstice = wd.findElements (By.xpath (".//*[@id='leftcontainer']/table/tbody/tr/td[1]")); System.out.println ("Skupno število vrstic je: + row.size ()); for (int i = 1; i  r) {r = m; }} System.out.println ("Najvišja trenutna cena je: + r); }}  

Razlaga kode:

  • S pomočjo gonilnika chrome poiščemo spletno tabelo in dobimo skupno število vrstic s pomočjo XPath ".//*[@id='leftcontainer']/table/tbody/tr/td[1]"
  • Z zanko for preletimo skupno število vrstic in eno za drugo pridobimo vrednosti. Za pridobitev naslednje vrstice uporabimo (i + 1) v XPathu
  • Primerjamo staro vrednost z novo vrednostjo in največja vrednost je natisnjena na koncu zanke for

OutPut

Primer: Pridobite vse vrednosti dinamične tabele

Upoštevajte naslednjo tabelo http://demo.guru99.com/test/table.html

Število stolpcev za vsako vrstico je različno.

Tu imajo vrstice številke 1, 2 in 4 3 celice, vrstica številka 3 pa 2 celici, vrstica številka 5 pa 1 celico.

Dobiti moramo vrednosti vseh celic

Tu je koda:

uvoz java.text.ParseException;uvoz java.util.List;uvoz org.openqa.selenium.By;uvoz org.openqa.selenium.WebDriver;uvoz org.openqa.selenium.WebElement;uvoz java.util.concurrent.TimeUnit;uvoz org.openqa.selenium.chrome.ChromeDriver;javni razred NofRowsColmns {public static void main (String [] args) vrže ParseException {WebDriver wd;System.setProperty ("webdriver.chrome.driver", "G: //chromedriver.exe");wd = nov ChromeDriver ();wd.manage (). timeouts (). implicitnoWait (5, TimeUnit.SECONDS);wd.get ("http://demo.guru99.com/test/table.html");// Iskanje tabele.WebElement mytable = wd.findElement (By.xpath ("/ html / body / table / tbody"));// Iskanje vrstic tabele.Seznam  row_table = mytable.findElements (By.tagName ("tr"));// Izračun števila vrstic v tabeli.int vrstice_število = vrstice_tabela.size ();// Zanka se bo izvajala do zadnje vrstice tabele.za (int vrstica = 0; vrstica <število_vrst; vrstica ++) {// Iskanje stolpcev (celic) te določene vrstice.Seznam  Stolpci_rast = vrstice_tabela.get (vrstica) .findElements (By.tagName ("td"));// Za izračun števila stolpcev (celic). V tej določeni vrstici.int columns_count = Stolpci_row.size ();System.out.println ("Število celic v vrstici" + vrstica + "so" + števec_številk);// Zanka se bo izvajala do zadnje celice te določene vrstice.za (int stolpec = 0; stolpec <število_ stolpcev; stolpec ++) {// Za pridobivanje besedila iz te določene celice.Niz celtext = stolpci_row.get (stolpec) .getText ();System.out.println ("Vrednost celice številka vrstice" + vrstica + "in številka stolpca" + stolpec + "Je" + celtext);}System.out.println ("------------------------------------------- ------- ");}}}

Razlaga kode:

  • row_count daje skupno število vrstic
  • za vsako vrstico dobimo skupno število stolpcev z uporabo row_table.get (vrstica) .findElements (By.tagName ("td"));
  • Preletimo skozi vsak stolpec in vsako vrstico ter pridobimo vrednosti.

Izhod :

Povzetek

  • By.xpath () se pogosto uporablja za dostop do elementov tabele.
  • Statične spletne tabele v selenu so dosledne. imajo torej določeno število vrstic in podatke o celicah.
  • Dinamične spletne tabele so nedosledne, tj. Nimajo določenega števila vrstic in podatkov celic.
  • Z uporabo spletnega gonilnika selena lahko enostavno obvladujemo dinamične spletne tabele.
  • Selenium Webdriver nam omogoča dostop do dinamičnih spletnih tabel po njihovi X-poti

Članek prispeva Kanchan Kulkarni.