Na webu su objavljene dvije vrste HTML tablica -
- Statičke tablice : Podaci su statični, tj. Broj redaka i stupaca je fiksan.
- Dinamičke tablice : Podaci su dinamični, tj. Broj redaka i stupaca NIJE fiksan.
Sada ćemo naučiti kako se rukuje dinamičnom tablicom u Seleniju:
Ispod je primjer dinamičke web tablice u programu Selenium za prodaju. Na temelju filtara za datum unosa, promijenit će se broj redaka. Dakle, dinamične je prirode.
Rukovanje statičnom tablicom je jednostavno, ali rukovanje dinamičkim tablicama u Seleniju pomalo je teško jer redovi i stupci nisu stalni.
U ovom vodiču naučit ćete-
- Korištenje X-Path za pronalaženje elemenata web tablice
- Primjer: Dohvaćanje broja redaka i stupaca iz Dynamic WebTable
- Primjer: Dohvaćanje vrijednosti ćelije određenog retka i stupca dinamičke tablice
- Primjer: Dohvatite maksimum svih vrijednosti u stupcu dinamičke tablice
- Primjer: Dohvatite sve vrijednosti dinamičke tablice
Korištenje X-Path za pronalaženje elemenata web tablice
Prije nego što lociramo web element, prvo shvatimo-
Što je web element?
Web elementi nisu ništa drugo doli HTML elementi poput tekstualnog okvira, radio gumba padajućih tipki, gumba za slanje itd. Ovi HTML elementi napisani su s početnom oznakom, a završavaju s završnom oznakom.
Na primjer,
Moj prvi HTML dokument
.Koraci za dobivanje X-puta web elementa koji želimo locirati.
Korak 1) U Chromeu idite na http://demo.guru99.com/test/web-table-element.php
Korak 2) Desni klik na web element čiji će x-put biti dohvaćen. U našem slučaju kliknite desnom tipkom miša na "Tvrtka" Odaberite opciju Inspect. Prikazat će se sljedeći zaslon -
Korak 3) Desni klik na istaknuti web element> Odaberite Kopiraj -> Kopiraj opciju x-path.
Korak 4) Upotrijebite kopiranu X-putanju "// * [@ id =" leftcontainer "] / table / thead / tr / th [1]" u programu Selenium WebDriver da biste pronašli element.
Primjer: Dohvaćanje broja redaka i stupaca iz Dynamic WebTable
Iako je dinamično rukovanje web tablicama u Seleniju ne možemo predvidjeti broj redaka i stupaca.
Pomoću selenovog web pokretačkog programa možemo pronaći
- Broj redaka i stupaca web tablice u Seleniju
- Podaci X retka ili Y stupca.
Ispod je program za dohvaćanje ukupnog broja redaka i stupaca za rukovanje web tablicom u Seleniju:
import java.text.ParseException;import java.util.List;uvoz org.openqa.selenium.By;uvoz org.openqa.selenium.WebDriver;uvoz org.openqa.selenium.WebElement;uvoz org.openqa.selenium.chrome.ChromeDriver;javna klasa Noofrowsandcols {public static void main (String [] args) baca ParseException {WebDriver wd;System.setProperty ("webdriver.chrome.driver", "G: //chromedriver.exe");wd = novi ChromeDriver ();wd.get ("http://demo.guru99.com/test/web-table-element.php");//Broj stupacaPopiscol = wd.findElements (By.xpath (".//*[@ id = \" leftcontainer \ "] / table / thead / tr / th"));System.out.println ("Broj kolona je: + col.size ());//Broj redakaPopis redovi = wd.findElements (By.xpath (".//*[@ id = 'leftcontainer'] / table / tbody / tr / td [1]")); System.out.println ("Broj redaka je: + redovi.size ()); wd.close (); }}
Objašnjenje koda:
- Ovdje smo prvo proglasili objekt web-upravljačkog programa "wd" i inicijalizirali ga u chrome driver.
- Koristimo List
za ukupan broj stupaca u "col". - findElements naredbe vraćaju popis SVIH elemenata koji se podudaraju s navedenim lokatorom
- pomoću findElements i X-path // * [@ id = \ "leftcontainer \"] / table / thead / tr / th dobivamo sve stupce
- Slično tome, ponavljamo postupak za retke.
Izlaz:
Primjer: Dohvaćanje vrijednosti ćelije određenog retka i stupca dinamičke tablice
Pretpostavimo da nam trebaju treći redak tablice i podaci njene druge ćelije. Pogledajte donju tablicu-
U gornjoj tablici podaci se redovito ažuriraju nakon određenog raspona vremena. Podaci koje pokušate dohvatiti razlikovat će se od gornjeg snimka zaslona. Međutim, kôd ostaje isti. Evo primjera programa za dobivanje podataka iz 3. retka i 2. stupca.
import java.text.ParseException;import java.util.List;uvoz org.openqa.selenium.By;uvoz org.openqa.selenium.WebDriver;uvoz org.openqa.selenium.WebElement;uvoz org.openqa.selenium.chrome.ChromeDriver;import java.util.concurrent.TimeUnit;javna klasa RowandCell {public static void main (String [] args) baca ParseException {WebDriver wd;System.setProperty ("webdriver.chrome.driver", "G: //chromedriver.exe");wd = novi 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 ("tablica"));// Za pronalazak trećeg reda tabliceWebElement tableRow = baseTable.findElement (By.xpath ("// * [@ id = \" leftcontainer \ "] / table / tbody / tr [3]"));Niz stringtext = tableRow.getText ();System.out.println ("Treći red tablice: + tekst retka);// za dobivanje podataka iz drugog stupca 3. retkaWebElement cellIneed = tableRow.findElement (By.xpath ("// * [@ id = \" leftcontainer \ "] / table / tbody / tr [3] / td [2]"));Niz valueIneed = cellIneed.getText ();System.out.println ("Vrijednost ćelije je: + valueIneed);wd.close ();}}
Objašnjenje koda:
- Tablica se nalazi pomoću svojstva lokatora "tagname".
- Korištenjem XPath "// * [@ id = \" leftcontainer \ "] / table / tbody / tr [3]" pronađite 3. red i dobivate njegov tekst pomoću funkcije getText ()
- Korištenjem Xpath "// * [@ id = \" leftcontainer \ "] / table / tbody / tr [3] / td [2]" pronađite 2. ćeliju u 3. redu i dobivate njezin tekst pomoću funkcije getText ()
Izlaz :
Primjer: Dohvatite maksimum svih vrijednosti u stupcu dinamičke tablice
U ovom ćemo primjeru dobiti maksimum svih vrijednosti u određenom stupcu.
Pogledajte sljedeću tablicu -
Ovdje je kod
import java.text.ParseException;import 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;javna klasa MaxFromTable {public static void main (String [] args) baca ParseException {WebDriver wd;System.setProperty ("webdriver.chrome.driver", "G: //chromedriver.exe");wd = novi ChromeDriver ();wd.get ("http://demo.guru99.com/test/web-table-element.php");String max;dvostruki m = 0, r = 0;//Ne. stupacaPopiscol = wd.findElements (By.xpath (".//*[@ id = 'leftcontainer'] / table / thead / tr / th"));System.out.println ("Ukupan broj stupaca je: + col.size ());//Broj redakaPopis redovi = wd.findElements (By.xpath (".//*[@id='leftcontainer']/table/tbody/tr/td[1]")); System.out.println ("Ukupan broj redaka je: + row.size ()); for (int i = 1; i r) {r = m; }} System.out.println ("Maksimalna trenutna cijena je: + r); }}
Objašnjenje koda:
- Koristeći chrome driver pronalazimo web tablicu i dobivamo ukupan broj redaka koristeći XPath ".//*[@id='leftcontainer']/table/tbody/tr/td[1]"
- Pomoću for petlje prelazimo kroz ukupan broj redaka i dohvaćamo vrijednosti jednu po jednu. Da bismo dobili sljedeći redak koristimo (i + 1) u XPathu
- Uspoređujemo staru vrijednost s novom vrijednošću, a maksimalna vrijednost se ispisuje na kraju for petlje
Izlaz
Primjer: Dohvatite sve vrijednosti dinamičke tablice
Razmotrite sljedeću tablicu http://demo.guru99.com/test/table.html
Broj stupaca za svaki redak je različit.
Ovdje redci 1, 2 i 4 imaju 3 stanice, a redak 3 ima 2 stanice, a red 5 ima 1 ćeliju.
Moramo dobiti vrijednosti svih stanica
Evo koda:
import java.text.ParseException;import java.util.List;uvoz org.openqa.selenium.By;uvoz org.openqa.selenium.WebDriver;uvoz org.openqa.selenium.WebElement;import java.util.concurrent.TimeUnit;uvoz org.openqa.selenium.chrome.ChromeDriver;javna klasa NofRowsColmns {public static void main (String [] args) baca ParseException {WebDriver wd;System.setProperty ("webdriver.chrome.driver", "G: //chromedriver.exe");wd = novi ChromeDriver ();wd.manage (). timeouts (). implicitnoWait (5, TimeUnit.SECONDS);wd.get ("http://demo.guru99.com/test/table.html");// Locirati tablicu.WebElement mytable = wd.findElement (By.xpath ("/ html / body / table / tbody"));// Za pronalaženje redaka tablice.Popisrow_table = mytable.findElements (By.tagName ("tr"));// Za izračunavanje broja redaka u tablici.int redovi_broj = redovi_tablica.size ();// Petlja će se izvršiti do zadnjeg retka tablice.za (int redak = 0; redak Stupci_r = redovi_tabela.get (redak) .findElements (By.tagName ("td"));// Za izračunavanje broja stupaca (ćelija). U tom određenom redu.int columns_count = Stupac_row.size ();System.out.println ("Broj ćelija u redu" + redak + "su" + broj_stupaca);// Petlja će se izvršiti do posljednje ćelije određenog retka.za (int stupac = 0; stupac Objašnjenje koda:
- redovi_broj daje ukupan broj redaka
- za svaki redak dobivamo ukupan broj stupaca pomoću row_table.get (redak) .findElements (By.tagName ("td"));
- Prelazimo kroz svaki stupac i svaki redak te dohvaćamo vrijednosti.
Izlaz :
Sažetak
- By.xpath () obično se koristi za pristup elementima tablice.
- Statičke web tablice u selenu dosljedne su prirode. tj. oni imaju fiksni broj redaka kao i podatke o ćeliji.
- Dinamičke web tablice nisu dosljedne, tj. Nemaju fiksni broj redaka i podataka o stanicama.
- Korištenjem upravljačkog programa za selenij lako možemo upravljati dinamičkim web tablicama.
- Selenium Webdriver omogućuje nam pristup dinamičkim web tablicama prema njihovoj X-putanji
Članak je dao Kanchan Kulkarni.