Žiniatinklyje yra dviejų tipų HTML lentelės,
- Statinės lentelės : duomenys yra statiniai, ty eilučių ir stulpelių skaičius yra fiksuotas.
- Dinaminės lentelės : duomenys yra dinamiški, ty eilučių ir stulpelių skaičius NE fiksuotas.
Dabar mes sužinosime, kaip tvarkyti dinaminę lentelę „Selenium“:
Žemiau pateikiamas dinaminės žiniatinklio lentelės „Selenium for Sales“ pavyzdys. Remiantis įvesties datos filtrais, eilučių skaičius bus pakeistas. Taigi, jis yra dinamiško pobūdžio.
Statinę lentelę lengva valdyti, tačiau dinaminių lentelių naudojimas „Selenium“ yra šiek tiek sunkus, nes eilutės ir stulpeliai nėra pastovūs.
Šioje pamokoje sužinosite
- X-Path naudojimas žiniatinklio lentelės elementams rasti
- Pavyzdys: Gaukite eilučių ir stulpelių skaičių iš „Dynamic WebTable“
- Pavyzdys: paimkite tam tikros dinaminės lentelės eilutės ir stulpelio langelio vertę
- Pavyzdys: gaukite maksimalų visų verčių skaičių dinaminės lentelės stulpelyje
- Pavyzdys: gaukite visas dinaminės lentelės reikšmes
X-Path naudojimas žiniatinklio lentelės elementams rasti
Prieš nustatydami žiniatinklio elementą, pirmiausia supraskime-
Kas yra žiniatinklio elementas?
Žiniatinklio elementai yra ne kas kita, o HTML elementai, pvz., Teksto laukelis, išskleidžiamieji meniu mygtukai, pateikimo mygtukai ir kt. Šie HTML elementai yra parašyti pradine žyme ir baigiasi pabaigos žyma.
Pavyzdžiui,
Mano pirmasis HTML dokumentas
.Veiksmai, kaip gauti norimo rasti žiniatinklio elemento X kelią.
1 veiksmas) „Chrome“ eikite į http://demo.guru99.com/test/web-table-element.php
2 žingsnis) Dešiniuoju pelės mygtuku spustelėkite žiniatinklio elementą, kurio x kelią reikia gauti. Mūsų atveju dešiniuoju pelės mygtuku spustelėkite parinktį „Įmonė“. Bus rodomas toks ekranas:
3 žingsnis) Dešiniuoju pelės mygtuku spustelėkite pažymėtą žiniatinklio elementą> Pasirinkite Kopijuoti -> Kopijuoti x kelią.
4 žingsnis. Norėdami rasti elementą, naudokite „Selenium WebDriver“ nukopijuotą X kelią „// * [@ id =" leftcontainer "] / table / thead / tr / th [1]".
Pavyzdys: Gaukite eilučių ir stulpelių skaičių iš „Dynamic WebTable“
Dinamiškai valdydami žiniatinklio lenteles „Selenium“, negalime numatyti jos eilučių ir stulpelių skaičiaus.
Naudodami „Selenium“ žiniatinklio tvarkyklę galime rasti
- „Selenium“ internetinės lentelės eilučių ir stulpelių skaičius
- X eilutės arba Y stulpelio duomenys.
Žemiau pateikiama programa, skirta gauti bendrą eilučių ir stulpelių skaičių, skirtą valdyti žiniatinklio lentelę „Selenium“:
importuoti java.text.ParseException;importuoti java.util.List;importuoti org.openqa.selenium.By;importuoti org.openqa.selenium.WebDriver;importuoti org.openqa.selenium.WebElement;importuoti org.openqa.selenium.chrome.ChromeDriver;viešoji klasė „Noofrowsandcols“ {public static void main (String [] args) meta ParseException {„WebDriver wd“;System.setProperty ("webdriver.chrome.driver", "G: //chromedriver.exe");wd = naujas „ChromeDriver“ ();wd.get ("http://demo.guru99.com/test/web-table-element.php");//Nr.of StulpeliaiSąrašascol = wd.findElements (By.xpath (".//*[@ id = \" leftcontainer \ "] / table / thead / tr / th"));System.out.println ("Elementų skaičius yra: + col.size ());//Eilių NrSąrašas eilutės = wd.findElements (By.xpath (".//*[@ id = 'leftcontainer'] / table / tbody / tr / td [1]"); System.out.println ("Eilučių skaičius yra: + eilutės.size ()); wd.close (); }}
Kodo paaiškinimas:
- Pirmiausia mes paskelbėme žiniatinklio tvarkyklės objektą „wd“ ir inicijavome jį „Chrome“ tvarkykle.
- Norėdami naudoti bendrą stulpelių skaičių „col“, naudojame sąrašą
. - „findElements“ komandos pateikia VISŲ elementų, atitinkančių nurodytą lokatorių, sąrašą
- naudodami „findElements“ ir „X-path“ // * [@ id = \ "leftcontainer \"] / table / thead / tr / th, gausime visus stulpelius
- Panašiai pakartojame eilučių procesą.
Išvestis:
Pavyzdys: paimkite tam tikros dinaminės lentelės eilutės ir stulpelio langelio vertę
Tarkime, mes turime 3 rd lentelės eilutėje ir jo antrosios Mobilusis duomenis. Žr. Toliau pateiktą lentelę
Aukščiau esančioje lentelėje duomenys reguliariai atnaujinami po tam tikro laiko. Duomenys, kuriuos bandote gauti, skirsis nuo anksčiau pateiktos ekrano kopijos. Tačiau kodas lieka tas pats. Čia pateikiama pavyzdinė programa, skirta gauti 3 -osios eilutės ir 2 -ojo stulpelio duomenis.
importuoti java.text.ParseException;importuoti java.util.List;importuoti org.openqa.selenium.By;importuoti org.openqa.selenium.WebDriver;importuoti org.openqa.selenium.WebElement;importuoti org.openqa.selenium.chrome.ChromeDriver;importuoti java.util.concurrent.TimeUnit;viešoji klasė „RowandCell“public static void main (String [] args) meta ParseException {„WebDriver wd“;System.setProperty ("webdriver.chrome.driver", "G: //chromedriver.exe");wd = naujas „ChromeDriver“ ();wd.get ("http://demo.guru99.com/test/web-table-element.php");wd.manage (). skirtasis laikas (). implicitlyWait (20, TimeUnit.SECONDS);„WebElement baseTable“ = wd.findElement (By.tagName ("lentelė"));// Norėdami rasti trečią lentelės eilutę„WebElement“ tableRow = baseTable.findElement (By.xpath ("// * [@ id = \" leftcontainer \ "] / table / tbody / tr [3]"));Eilutės eilutės tekstas = tableRow.getText ();System.out.println ("Trečioji lentelės eilutė: + eilutės tekstas);// gauti 3 eilutės 2 stulpelio duomenis„WebElement cellIneed = tableRow.findElement (By.xpath (" // * [@ id = \ "leftcontainer \"] / table / tbody / tr [3] / td [2] "));String valueIneed = cellIneed.getText ();System.out.println ("Langelio reikšmė yra: + Reikalinga reikšmė);wd.close ();}}
Kodo paaiškinimas:
- Lentelė pateikiama naudojant lokatoriaus ypatybę „tagname“.
- Naudojant XPath "// * [@ id = \" leftcontainer \ "] / Lentelė / tbody / TR [3]" rasti 3 rd eilutę ir gauna savo tekstą naudodami Gettext () funkcija
- Naudodami Xpath "// * [@ id = \" leftcontainer \ "] / table / tbody / tr [3] / td [2]" raskite 2-ą langelį 3 - oje eilutėje ir gausite jo tekstą naudodami funkciją getText ()
Išvestis :
Pavyzdys: gaukite maksimalų visų verčių skaičių dinaminės lentelės stulpelyje
Šiame pavyzdyje gausime maksimalų visų tam tikro stulpelio verčių skaičių.
Žr. Šią lentelę -
Čia yra kodas
importuoti java.text.ParseException;importuoti java.util.List;importuoti org.openqa.selenium.By;importuoti org.openqa.selenium.WebDriver;importuoti org.openqa.selenium.WebElement;importuoti org.openqa.selenium.chrome.ChromeDriver;importuoti java.text.NumberFormat;viešoji klasė „MaxFromTable“ {public static void main (String [] args) meta ParseException {„WebDriver wd“;System.setProperty ("webdriver.chrome.driver", "G: //chromedriver.exe");wd = naujas „ChromeDriver“ ();wd.get ("http://demo.guru99.com/test/web-table-element.php");Stygos maks;dvigubas m = 0, r = 0;// Ne. stulpeliųSąrašascol = wd.findElements (By.xpath (".//*[@ id = 'leftcontainer'] / table / thead / tr / th");System.out.println ("Bendras stulpelių skaičius yra: + col.size ());//Eilių NrSąrašas eilutės = wd.findElements (By.xpath (".//*[@id='leftcontainer']/table/tbody/tr/td[1]"); System.out.println ("Bendras eilučių skaičius yra: + rows.size ()); for (int i = 1; i r) {r = m; }} System.out.println ("Didžiausia dabartinė kaina yra: + r); }}
Kodo paaiškinimas:
- Naudodami „Chrome“ tvarkyklę surandame žiniatinklio lentelę ir gauname bendrą eilučių skaičių naudodami XPath ".//*[@id='leftcontainer']/table/tbody/tr/td[1]"
- Naudojant ciklui kartojame bendrą eilučių skaičių ir gauname reikšmes po vieną. Norėdami gauti kitą eilutę, mes naudojame (i + 1) XPath
- Mes palyginame seną vertę su nauja verte, o maksimali vertė yra atspausdinta kilpos pabaigoje
OutPut
Pavyzdys: gaukite visas dinaminės lentelės reikšmes
Apsvarstykite šią lentelę http://demo.guru99.com/test/table.html
Kiekvienos eilutės stulpelių skaičius yra skirtingas.
Čia 1, 2 ir 4 eilutėse yra 3 langeliai, o 3 eilutėje yra 2 langeliai, o 5 eilutėje yra 1 langelis.
Turime gauti visų ląstelių reikšmes
Štai kodas:
importuoti java.text.ParseException;importuoti java.util.List;importuoti org.openqa.selenium.By;importuoti org.openqa.selenium.WebDriver;importuoti org.openqa.selenium.WebElement;importuoti java.util.concurrent.TimeUnit;importuoti org.openqa.selenium.chrome.ChromeDriver;viešoji klasė „NofRowsColmns“public static void main (String [] args) meta ParseException {„WebDriver wd“;System.setProperty ("webdriver.chrome.driver", "G: //chromedriver.exe");wd = naujas „ChromeDriver“ ();wd.manage (). skirtasis laikas (). implicitlyWait (5, TimeUnit.SECONDS);wd.get ("http://demo.guru99.com/test/table.html");// Norėdami rasti lentelę.„WebElement“ mytable = wd.findElement (By.xpath ("/ html / body / table / tbody"));// Norėdami rasti lentelės eilutes.Sąrašaseilutės_tabelis = mytable.findElements (By.tagName ("tr"));// Norėdami apskaičiuoti eilučių skaičių lentelėje.int eilučių skaičius = eilučių_ lentelė.dydis ();// ciklas bus vykdomas iki paskutinės lentelės eilutės.už (int eilutė = 0; eilutė Columns_row = rows_table.get (row) .findElements (By.tagName ("td"));// Norėdami apskaičiuoti stulpelių (langelių) skaičių. Toje konkrečioje eilutėje.int columns_count = Stulpelių_row.size ();System.out.println ("Eilučių langelių skaičius" + eilutė + "yra" + stulpelių_skaičius);// Ciklas bus vykdomas iki paskutinės tos konkrečios eilutės langelio.for (int stulpelis = 0; stulpelis Kodo paaiškinimas:
- Rows_count nurodo bendrą eilučių skaičių
- kiekvienai eilutei gauname bendrą stulpelių skaičių naudodamiesi rows_table.get (row) .findElements (By.tagName ("td"));
- Kartojame kiekvieną stulpelį, kiekvieną eilutę ir gauname reikšmes.
Išvestis :
Santrauka
- By.xpath () paprastai naudojamas norint pasiekti lentelės elementus.
- „Selenium“ statinės interneto lentelės yra nuoseklaus pobūdžio. ty jie turi fiksuotą eilučių skaičių ir ląstelių duomenis.
- Dinaminės žiniatinklio lentelės yra nenuoseklios, ty jose nėra fiksuoto eilučių ir langelių duomenų skaičiaus.
- Naudodami seleno žiniatinklio tvarkyklę, mes lengvai galime valdyti dinamines žiniatinklio lenteles.
- „Selenium Webdriver“ leidžia mums pasiekti dinamines žiniatinklio lenteles pagal jų X kelią
Straipsnį parašė Kanchanas Kulkarni.