Tīmeklī ir publicēti divu veidu HTML tabulas.
- Statiskās tabulas : dati ir statiski, ti, rindu un kolonnu skaits ir fiksēts.
- Dinamiskās tabulas : dati ir dinamiski, ti, rindu un kolonnu skaits NAV fiksēts.
Tagad mēs uzzināsim, kā rīkoties ar dinamisko tabulu Selenium:
Zemāk ir dinamiska tīmekļa tabulas piemērs vietnē Selenium for Sales. Pamatojoties uz ievades datuma filtriem, rindu skaits tiks mainīts. Tātad tas ir dinamisks pēc būtības.
Darbs ar statisko tabulu ir vienkāršs, taču dinamisko tabulu apstrāde Selenium ir nedaudz sarežģīta, jo rindas un kolonnas nav nemainīgas.
Šajā apmācībā jūs uzzināsiet
- X-Path izmantošana tīmekļa tabulas elementu atrašanai
- Piemērs: Ielādējiet rindu un kolonnu skaitu no Dynamic WebTable
- Piemērs: Dinamiskās tabulas noteiktas rindas un kolonnas šūnas vērtības iegūšana
- Piemērs: iegūstiet visu vērtību maksimālo vērtību dinamiskās tabulas kolonnā
- Piemērs: iegūstiet visas dinamiskās tabulas vērtības
X-Path izmantošana tīmekļa tabulas elementu atrašanai
Pirms atrodam tīmekļa elementu, vispirms saprotam-
Kas ir tīmekļa elements?
Tīmekļa elementi ir nekas cits kā HTML elementi, piemēram, tekstlodziņš, nolaižamās izvēlnes pogas, iesniegšanas pogas utt. Šie HTML elementi ir rakstīti ar sākuma tagu un beidzas ar beigu tagu.
Piemēram,
Mans pirmais HTML dokuments
.Darbības, lai iegūtu tīmekļa elementa X ceļu, kuru mēs vēlamies atrast.
1. darbība . Pārlūkā Chrome dodieties uz vietni http://demo.guru99.com/test/web-table-element.php
2. solis. Ar peles labo pogu noklikšķiniet uz tīmekļa elementa, kura x-path ir jāiegūst. Mūsu gadījumā ar peles labo pogu noklikšķiniet uz opcijas Uzņēmums. Tiks parādīts šāds ekrāns -
3. solis) Ar peles labo pogu noklikšķiniet uz iezīmētā tīmekļa elementa> Atlasiet Kopēt -> Kopēt x-ceļu opciju.
4. solis. Izmantojiet kopēto X ceļu "// * [@ id =" leftcontainer "] / table / thead / tr / th [1]" Selenium WebDriver, lai atrastu elementu.
Piemērs: Ielādējiet rindu un kolonnu skaitu no Dynamic WebTable
Kaut arī dinamiskā tīmekļa tabulu apstrāde Selenium, mēs nevaram paredzēt tās rindu un kolonnu skaitu.
Izmantojot Selenium tīmekļa draiveri, mēs varam atrast
- Selēna tīmekļa tabulas rindu un kolonnu skaits
- X rindas vai Y kolonnas dati.
Zemāk ir programma, lai iegūtu kopējo rindu un kolonnu skaitu tīmekļa tabulas apstrādei Selenium:
importēt java.text.ParseException;importēt java.util.List;importēt org.openqa.selenium.By;importēt org.openqa.selenium.WebDriver;importēt org.openqa.selenium.WebElement;importēt org.openqa.selenium.chrome.ChromeDriver;sabiedrības klase Noofrowsandcols {public static void main (String [] args) met ParseException {WebDriver wd;System.setProperty ("webdriver.chrome.driver", "G: //chromedriver.exe");wd = jauns ChromeDriver ();wd.get ("http://demo.guru99.com/test/web-table-element.php");// Kolonnu NrSarakstscol = wd.findElements (By.xpath (".//*[@ id = \" leftcontainer \ "] / table / thead / tr / th");System.out.println ("Kolu skaits ir: + col.size ());// rindu navSaraksts rindas = wd.findElements (By.xpath (".//*[@ id = 'leftcontainer'] / table / tbody / tr / td [1]")); System.out.println ("Rindu skaits ir: + rows.size ()); wd.close (); }}
Koda skaidrojums:
- Šeit mēs vispirms esam deklarējuši Web draivera objektu "wd" un inicializējuši to hroma draiverī.
- Lai izmantotu kolonnu kopu kolonnā, mēs izmantojam sarakstu
. - komandas findElements atgriež VISU elementu sarakstu, kas atbilst norādītajam lokatoram
- izmantojot findElements un X-path // * [@ id = \ "leftcontainer \"] / table / thead / tr / th, mēs iegūstam visas kolonnas
- Līdzīgi mēs atkārtojam procesu rindām.
Izeja:
Piemērs: Dinamiskās tabulas noteiktas rindas un kolonnas šūnas vērtības iegūšana
Pieņemsim, ka mums ir 3 rd rindu tabulas un tās otrā šūnā datus. Skatīt tabulu zemāk-
Iepriekš redzamajā tabulā dati tiek regulāri atjaunināti pēc kāda laika. Dati, kurus mēģināt izgūt, atšķirsies no iepriekš redzamā ekrānuzņēmuma. Tomēr kods paliek nemainīgs. Te ir paraugs programma, lai iegūtu 3 rd rindu un 2 nd kolonna datus.
importēt java.text.ParseException;importēt java.util.List;importēt org.openqa.selenium.By;importēt org.openqa.selenium.WebDriver;importēt org.openqa.selenium.WebElement;importēt org.openqa.selenium.chrome.ChromeDriver;importēt java.util.concurrent.TimeUnit;publiskā klase RowandCell {public static void main (String [] args) met ParseException {WebDriver wd;System.setProperty ("webdriver.chrome.driver", "G: //chromedriver.exe");wd = jauns ChromeDriver ();wd.get ("http://demo.guru99.com/test/web-table-element.php");wd.manage (). taimauti (). implicitWait (20, TimeUnit.SECONDS);WebElement baseTable = wd.findElement (By.tagName ("tabula"));// Lai atrastu trešo tabulas rinduWebElement tableRow = baseTable.findElement (By.xpath ("// * [@ id = \" leftcontainer \ "] / table / tbody / tr [3]"));Virknes rindteksts = tableRow.getText ();System.out.println ("Trešā tabulas rinda: + rindteksts);// lai iegūtu 3. rindas 2. kolonnas datusWebElement cellIneed = tableRow.findElement (By.xpath ("// * [@ id = \" leftcontainer \ "] / table / tbody / tr [3] / td [2]"));String valueIneed = cellIneed.getText ();System.out.println ("Šūnas vērtība ir: + vērtībaVajadzīga);wd.close ();}}
Koda skaidrojums:
- Tabula atrodas, izmantojot lokatora rekvizītu "tagname".
- Izmantojot XPath "// * [@ id = \" leftcontainer \ "] / galda / tbody / tr" [3] atrast 3 rd rindu un saņem savu tekstu, izmantojot gettext () funkciju
- Izmantojot xPath "// * [@ id = \" leftcontainer \ "] / galda / tbody / tr [3] / td [2]" atrast 2nd šūnu 3 rd rindā un saņem tās tekstu, izmantojot gettext () funkciju
Izeja :
Piemērs: iegūstiet visu vērtību maksimālo vērtību dinamiskās tabulas kolonnā
Šajā piemērā mēs iegūsim visu vērtību maksimumu noteiktā kolonnā.
Skatiet šo tabulu -
Šeit ir kods
importēt java.text.ParseException;importēt java.util.List;importēt org.openqa.selenium.By;importēt org.openqa.selenium.WebDriver;importēt org.openqa.selenium.WebElement;importēt org.openqa.selenium.chrome.ChromeDriver;importēt java.text.NumberFormat;publiskā klase MaxFromTable {public static void main (String [] args) met ParseException {WebDriver wd;System.setProperty ("webdriver.chrome.driver", "G: //chromedriver.exe");wd = jauns ChromeDriver ();wd.get ("http://demo.guru99.com/test/web-table-element.php");Stīga max;dubultā m = 0, r = 0;//Nē. no kolonnāmSarakstscol = wd.findElements (By.xpath (".//*[@ id = 'leftcontainer'] / table / thead / tr / th");System.out.println ("Kopējais kolonnu skaits ir: + kol.izmērs ());// rindu navSaraksts rindas = wd.findElements (By.xpath (".//*[@id='leftcontainer']/table/tbody/tr/td[1]"); System.out.println ("Kopējais rindu skaits ir: + rows.size ()); for (int i = 1; i r) {r = m; }} System.out.println ("Maksimālā pašreizējā cena ir: + r); }}
Koda skaidrojums:
- Izmantojot chrome draiveri, atrodam tīmekļa tabulu un iegūstam kopējo rindu skaitu, izmantojot XPath ".//*[@id='leftcontainer']/table/tbody/tr/td[1]"
- Izmantojot ciklam, mēs atkārtojam kopējo rindu skaitu un pa vienam ienesam vērtības. Lai iegūtu nākamo rindu, XPath izmantojam (i + 1)
- Mēs salīdzinām veco vērtību ar jauno vērtību, un maksimālā vērtība tiek izdrukāta cilpas beigās
OutPut
Piemērs: iegūstiet visas dinamiskās tabulas vērtības
Apsveriet šo tabulu http://demo.guru99.com/test/table.html
Katras rindas kolonnu skaits ir atšķirīgs.
Šeit 1., 2. un 4. rindā ir 3 šūnas, un 3. rindā ir 2 šūnas, un 5. rindā ir 1 šūna.
Mums jāsaņem visu šūnu vērtības
Šeit ir kods:
importēt java.text.ParseException;importēt java.util.List;importēt org.openqa.selenium.By;importēt org.openqa.selenium.WebDriver;importēt org.openqa.selenium.WebElement;importēt java.util.concurrent.TimeUnit;importēt org.openqa.selenium.chrome.ChromeDriver;publiskā klase NofRowsColmns {public static void main (String [] args) met ParseException {WebDriver wd;System.setProperty ("webdriver.chrome.driver", "G: //chromedriver.exe");wd = jauns ChromeDriver ();wd.manage (). taimauti (). implicitWait (5, TimeUnit.SECONDS);wd.get ("http://demo.guru99.com/test/table.html");// Lai atrastu tabulu.WebElement mytable = wd.findElement (By.xpath ("/ html / body / table / tbody"));// Lai atrastu tabulas rindas.Sarakstsrows_table = mytable.findElements (By.tagName ("tr"));// Lai aprēķinātu tabulas rindu skaitu.int rindu skaits = rindas_tabula.izmērs ();// Loop tiks izpildīts līdz pēdējai tabulas rindai.par (int rinda = 0; rinda Columns_row = rows_table.get (row) .findElements (By.tagName ("td"));// Lai aprēķinātu kolonnu (šūnu) skaitu. Šajā konkrētajā rindā.int kolonnas_skaits = Kolonnas_rinda.izmērs ();System.out.println ("Šūnu skaits rindā" + rinda + "ir" + kolonnu skaits);// Loop tiks izpildīts līdz šīs konkrētās rindas pēdējai šūnai.par (int kolonna = 0; kolonna Koda skaidrojums:
- rows_count norāda kopējo rindu skaitu
- katrai rindai mēs iegūstam kopējo kolonnu skaitu, izmantojot rows_table.get (row) .findElements (By.tagName ("td"));
- Mēs atkārtojam katru kolonnu un katru rindu, un iegūstam vērtības.
Izeja :
Kopsavilkums
- By.xpath () parasti izmanto, lai piekļūtu tabulas elementiem.
- Selēna statiskās tīmekļa tabulas pēc būtības ir konsekventas. ti, viņiem ir noteikts rindu skaits, kā arī šūnu dati.
- Dinamiskās tīmekļa tabulas ir pretrunīgas, ti, tām nav fiksēta rindu un šūnu datu skaita.
- Izmantojot selēna tīmekļa draiveri, mēs viegli varam apstrādāt dinamiskās tīmekļa tabulas.
- Selenium Webdriver ļauj mums piekļūt dinamiskām tīmekļa tabulām, izmantojot to X ceļu
Raksta autors ir Kanchan Kulkarni.