Zpracování dynamických webových tabulek pomocí selenového WebDriveru

Obsah:

Anonim

Na webu jsou publikovány dva typy tabulek HTML -

  1. Statické tabulky : Data jsou statická, tj. Počet řádků a sloupců je pevný.
  2. Dynamické tabulky : Data jsou dynamická, tj. Počet řádků a sloupců NENÍ fixní.

Nyní se naučíme, jak zacházet s dynamickou tabulkou v selenu:

Níže je uveden příklad dynamické webové tabulky v Selenium for Sales. Na základě vstupních filtrů data se změní počet řádků. Má tedy dynamickou povahu.

Zpracování statické tabulky je snadné, ale zpracování dynamických tabulek v selenu je trochu obtížné, protože řádky a sloupce nejsou konstantní.

V tomto výukovém programu se naučíte

  • Použití X-Path k vyhledání prvků webové tabulky
  • Příklad: Načtěte počet řádků a sloupců z Dynamické webové tabulky
  • Příklad: Načíst hodnotu buňky konkrétního řádku a sloupce dynamické tabulky
  • Příklad: Získejte maximum ze všech hodnot ve sloupci dynamické tabulky
  • Příklad: Získejte všechny hodnoty dynamické tabulky

Použití X-Path k vyhledání prvků webové tabulky

Než vyhledáme webový prvek, nejprve pochopíme -

Co je to webový prvek?

Webové prvky nejsou nic jiného než prvky HTML, jako je textové pole, přepínače rozevíracího seznamu, tlačítka pro odeslání atd. Tyto prvky HTML jsou psány počáteční značkou a končí koncovou značkou.

Například,

Můj první dokument HTML

.

Kroky pro získání X-cesty webového prvku, který chceme najít.

Krok 1) V prohlížeči Chrome přejděte na stránku http://demo.guru99.com/test/web-table-element.php

Krok 2) Klikněte pravým tlačítkem na webový prvek, jehož x-cesta se má načíst. V našem případě klikněte pravým tlačítkem na možnost „Společnost“ Vyberte možnost Zkontrolovat. Zobrazí se následující obrazovka -

Krok 3) Klikněte pravým tlačítkem na zvýrazněný webový prvek> Vyberte možnost Kopírovat -> Kopírovat cestu x.

Krok 4) Použijte zkopírovanou X-cestu „// * [@ id =" leftcontainer "] / table / thead / tr / th [1]" v selenovém WebDriveru k vyhledání prvku.

Příklad: Načtěte počet řádků a sloupců z Dynamické webové tabulky

Při zpracování dynamické webové tabulky v selenu nemůžeme předvídat její počet řádků a sloupců.

Pomocí webového ovladače Selenium můžeme najít

  • Počet řádků a sloupců webové tabulky v selenu
  • Data X řádku nebo Y sloupce.

Níže je program pro načítání celkového počtu řádků a sloupců pro zpracování webové tabulky v selenu:

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;veřejná třída Noofrowsandcols {public static void main (String [] args) hodí 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");//No of ColumnsSeznam  col = wd.findElements (By.xpath (".//*[@ id = \" leftcontainer \ "] / table / thead / tr / th"));System.out.println ("Počet sloupců jsou: + col.size ());// Počet řádkůSeznam  řádky = wd.findElements (By.xpath (".//*[@ id = 'leftcontainer'] / table / tbody / tr / td [1]")); System.out.println ("Počet řádků je: + rows.size ()); wd.close (); }}  

Vysvětlení kódu:

  • Zde jsme nejprve deklarovali objekt webového ovladače „wd“ a inicializovali jej na ovladač chrome.
  • K celkovému počtu sloupců ve sloupci používáme List .
  • Příkazy findElements vrací seznam VŠECH prvků odpovídajících zadanému lokátoru
  • pomocí findElements a X-path // * [@ id = \ "leftcontainer \"] / table / thead / tr / th dostaneme všechny sloupce
  • Podobně postup opakujeme pro řádky.

Výstup:

Příklad: Načíst hodnotu buňky konkrétního řádku a sloupce dynamické tabulky

Předpokládejme, že potřebujeme 3 rd řádek tabulky a data své druhé buňky. Viz tabulka níže-

Ve výše uvedené tabulce jsou data po určité době pravidelně aktualizována. Data, která se pokusíte načíst, se budou lišit od výše uvedeného snímku obrazovky. Kód však zůstává stejný. Zde je ukázkový program pro získání 3 rd řádek a 2 nd dat sloupce.

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;veřejná třída RowandCell {public static void main (String [] args) hodí 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 (). implicitlyWait (20, TimeUnit.SECONDS);WebElement baseTable = wd.findElement (By.tagName ("tabulka"));// Najít třetí řádek tabulkyWebElement tableRow = baseTable.findElement (By.xpath ("// * [@ id = \" leftcontainer \ "] / table / tbody / tr [3]"));Řetězec rowtext = tableRow.getText ();System.out.println ("Třetí řádek tabulky: + text řádku);// pro získání dat 2. sloupce 3. řádkuWebElement cellIneed = tableRow.findElement (By.xpath ("// * [@ id = \" leftcontainer \ "] / table / tbody / tr [3] / td [2]"));Řetězec valueIneed = cellIneed.getText ();System.out.println ("Hodnota buňky je: + valueIneed);wd.close ();}}

Vysvětlení kódu:

  • Tabulka je umístěna pomocí vlastnosti lokátoru "tagname".
  • Použití "// [@ id = \ *" leftcontainer \ "] / / [3] / stolní tbody tr" XPath najít 3 rd funkce řádek a dostává svůj text pomocí Gettext ()
  • Použití "// * [@ id = \" leftcontainer \ "] / / / tabulka tbody tr [3] / td [2]" XPath najít 2. buňku 3 rd funkci řadě a dostane jeho textu pomocí Gettext ()

Výstup :

Příklad: Získejte maximum ze všech hodnot ve sloupci dynamické tabulky

V tomto příkladu získáme maximum všech hodnot v konkrétním sloupci.

Viz následující tabulka -

Tady je kód

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;veřejná třída MaxFromTable {public static void main (String [] args) hodí 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");Řetězec max;dvojité m = 0, r = 0;//Ne. sloupcůSeznam  col = wd.findElements (By.xpath (".//*[@ id = 'leftcontainer'] / table / thead / tr / th"));System.out.println ("Celkový počet sloupců je: + col.size ());// Počet řádkůSeznam  řádky = wd.findElements (By.xpath (".//*[@id='leftcontainer']/table/tbody/tr/td[1]")); System.out.println ("Celkový počet řádků je: + rows.size ()); for (int i = 1; i  r) {r = m; }} System.out.println ("Maximální aktuální cena je: + r); }}  

Vysvětlení kódu:

  • Pomocí ovladače chromu vyhledáme webovou tabulku a celkový počet řádků získáme pomocí XPath ".//*[@id='leftcontainer']/table/tbody/tr/td[1]"
  • Pomocí smyčky for iterujeme celkový počet řádků a načítáme hodnoty jeden po druhém. K získání dalšího řádku používáme (i + 1) v XPath
  • Porovnáme starou hodnotu s novou hodnotou a maximální hodnota se vytiskne na konci cyklu for

Výstup

Příklad: Získejte všechny hodnoty dynamické tabulky

Zvažte následující tabulku http://demo.guru99.com/test/table.html

Počet sloupců pro každý řádek je jiný.

Řádek číslo 1, 2 a 4 má 3 buňky a řádek číslo 3 má 2 buňky a řádek číslo 5 má 1 buňku.

Musíme získat hodnoty všech buněk

Zde je kód:

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;veřejná třída NofRowsColmns {public static void main (String [] args) hodí ParseException {WebDriver wd;System.setProperty ("webdriver.chrome.driver", "G: //chromedriver.exe");wd = nový ChromeDriver ();wd.manage (). timeouts (). implicitlyWait (5, TimeUnit.SECONDS);wd.get ("http://demo.guru99.com/test/table.html");// Vyhledání tabulky.WebElement mytable = wd.findElement (By.xpath ("/ html / body / table / tbody"));// Chcete-li vyhledat řádky tabulky.List  lines_table = mytable.findElements (By.tagName ("tr"));// Pro výpočet počtu řádků v tabulce.int řádky_počet = řádky_tabulka.size ();// Smyčka se spustí až do posledního řádku tabulky.pro (int řádek = 0; řádek 
 Columns_row = lines_table.get (row) .findElements (By.tagName ("td"));// Pro výpočet počtu sloupců (buněk). V tomto konkrétním řádku.int columns_count = Columns_row.size ();System.out.println ("Počet buněk v řádku" + řádek + "jsou" + sloupce_počet);// Smyčka se spustí až do poslední buňky daného konkrétního řádku.for (int column = 0; column 

Vysvětlení kódu:

  • Rows_count udává celkový počet řádků
  • pro každý řádek dostaneme celkový počet sloupců pomocí lines_table.get (řádek) .findElements (By.tagName ("td"));
  • Opakujeme každý sloupec a každý řádek a načítáme hodnoty.

Výstup :

souhrn

  • By.xpath () se běžně používá pro přístup k prvkům tabulky.
  • Statické webové tabulky v selenu mají konzistentní povahu. tj. mají pevný počet řádků i data buněk.
  • Dynamické webové tabulky jsou nekonzistentní, tj. Nemají pevný počet dat řádků a buněk.
  • Pomocí webového ovladače selenu můžeme snadno zpracovávat dynamické webové tabulky.
  • Selenium Webdriver nám umožňuje přístup k dynamickým webovým tabulkám pomocí jejich X-cesty

Do článku přispívá Kanchan Kulkarni.