Gestione di tabelle Web dinamiche utilizzando Selenium WebDriver

Sommario:

Anonim

Esistono due tipi di tabelle HTML pubblicate sul Web:

  1. Tabelle statiche : i dati sono statici, ovvero il numero di righe e colonne è fisso.
  2. Tabelle dinamiche : i dati sono dinamici, ovvero il numero di righe e colonne NON è fisso.

Ora impareremo come gestire la tabella dinamica in Selenium:

Di seguito è riportato un esempio di una tabella Web dinamica in Selenium for Sales. In base ai filtri della data di input, il numero di righe verrà modificato. Quindi, è di natura dinamica.

Gestire le tabelle statiche è facile, ma gestire le tabelle dinamiche in Selenium è un po 'difficile in quanto righe e colonne non sono costanti.

In questo tutorial imparerai-

  • Utilizzo di X-Path per individuare gli elementi della tabella Web
  • Esempio: recupera il numero di righe e colonne da Dynamic WebTable
  • Esempio: recupera il valore della cella di una particolare riga e colonna della tabella dinamica
  • Esempio: ottieni il massimo di tutti i valori in una colonna della tabella dinamica
  • Esempio: ottieni tutti i valori di una tabella dinamica

Utilizzo di X-Path per individuare gli elementi della tabella Web

Prima di individuare l'elemento web, per prima cosa capiamo-

Cos'è un elemento web?

Gli elementi Web non sono altro che elementi HTML come casella di testo, pulsanti di opzione a discesa, pulsanti di invio, ecc. Questi elementi HTML sono scritti con un tag di inizio e termina con un tag di fine .

Per esempio,

Il mio primo documento HTML

.

Passaggi per ottenere il percorso X dell'elemento web che vogliamo individuare.

Passaggio 1) In Chrome, vai a http://demo.guru99.com/test/web-table-element.php

Passaggio 2) Fare clic con il pulsante destro del mouse sull'elemento Web il cui percorso x deve essere recuperato. Nel nostro caso, fai clic con il pulsante destro del mouse su "Azienda" Seleziona l'opzione Ispeziona. Apparirà la seguente schermata:

Passaggio 3) Fare clic con il pulsante destro del mouse sull'elemento Web evidenziato> Selezionare Copia -> Copia opzione percorso x.

Passaggio 4) Utilizzare il percorso X copiato "// * [@ id =" leftcontainer "] / table / thead / tr / th [1]" in Selenium WebDriver per individuare l'elemento.

Esempio: recupera il numero di righe e colonne da Dynamic WebTable

Durante la gestione dinamica delle tabelle web in Selenium, non possiamo prevederne il numero di righe e colonne.

Usando il driver web Selenium, possiamo trovare

  • Numero di righe e colonne della tabella web in selenio
  • Dati della riga X o della colonna Y.

Di seguito è riportato il programma per il recupero del numero totale di righe e colonne per la gestione della tabella web in Selenium:

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;public class Noofrowsandcols {public static void main (String [] args) genera ParseException {WebDriver wd;System.setProperty ("webdriver.chrome.driver", "G: //chromedriver.exe");wd = new ChromeDriver ();wd.get ("http://demo.guru99.com/test/web-table-element.php");//Numero di colonneElenco  col = wd.findElements (By.xpath (".//*[@ id = \" leftcontainer \ "] / table / thead / tr / th"));System.out.println ("Il numero di colonne è: + col.size ());//Numero di righeElenco  righe = wd.findElements (By.xpath (".//*[@ id = 'leftcontainer'] / table / tbody / tr / td [1]")); System.out.println ("Il numero di righe è: + rows.size ()); wd.close (); }}  

Spiegazione del codice:

  • Qui abbiamo prima dichiarato l'oggetto Web Driver "wd" e inizializzato su chrome driver.
  • Usiamo List per il numero totale di colonne in "col".
  • I comandi findElements restituiscono un elenco di TUTTI gli elementi che corrispondono al localizzatore specificato
  • usando findElements e X-path // * [@ id = \ "leftcontainer \"] / table / thead / tr / th otteniamo tutte le colonne
  • Allo stesso modo, ripetiamo il processo per le righe.

Produzione:

Esempio: recupera il valore della cella di una particolare riga e colonna della tabella dinamica

Supponiamo di aver bisogno della terza riga della tabella e dei dati della sua seconda cella. Vedere la tabella sottostante-

Nella tabella sopra, i dati vengono aggiornati regolarmente dopo un certo periodo di tempo. I dati che proverai a recuperare saranno diversi dallo screenshot qui sopra. Tuttavia, il codice rimane lo stesso. Ecco programma di esempio per ottenere il 3 ° fila e 2 ° dei dati della colonna.

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;public class RowandCell {public static void main (String [] args) genera ParseException {WebDriver wd;System.setProperty ("webdriver.chrome.driver", "G: //chromedriver.exe");wd = new 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 ("table"));// Per trovare la terza riga della tabellaWebElement tableRow = baseTable.findElement (By.xpath ("// * [@ id = \" leftcontainer \ "] / table / tbody / tr [3]"));String rowtext = tableRow.getText ();System.out.println ("Terza riga della tabella: + rowtext);// per ottenere i dati della seconda colonna della terza rigaWebElement cellIneed = tableRow.findElement (By.xpath ("// * [@ id = \" leftcontainer \ "] / table / tbody / tr [3] / td [2]"));String valueIneed = cellIneed.getText ();System.out.println ("Il valore della cella è: + valueIneed);wd.close ();}}

Spiegazione del codice:

  • La tabella si trova utilizzando la proprietà del localizzatore "tagname".
  • Utilizzando XPath "// * [@ id = \" leftcontainer \ "] / table / tbody / tr [3]" trova la terza riga e ottiene il suo testo usando la funzione getText ()
  • L'utilizzo di "[@ id = \ // *" leftcontainer \ "] Xpath / table / tbody / tr [3] / td [2]" trovare la seconda cella in 3 ° funzione fila e prende il testo utilizzando getText ()

Uscita :

Esempio: ottieni il massimo di tutti i valori in una colonna della tabella dinamica

In questo esempio, otterremo il massimo di tutti i valori in una particolare colonna.

Fare riferimento alla tabella seguente -

Ecco il codice

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;classe pubblica MaxFromTable {public static void main (String [] args) genera ParseException {WebDriver wd;System.setProperty ("webdriver.chrome.driver", "G: //chromedriver.exe");wd = new ChromeDriver ();wd.get ("http://demo.guru99.com/test/web-table-element.php");String max;doppio m = 0, r = 0;//No. di colonneElenco  col = wd.findElements (By.xpath (".//*[@ id = 'leftcontainer'] / table / thead / tr / th"));System.out.println ("Il numero totale di colonne è: + col.size ());//Numero di righeElenco  righe = wd.findElements (By.xpath (".//*[@id='leftcontainer'”/table/tbody/tr/td[1]")); System.out.println ("Il numero totale di righe è: + rows.size ()); for (int i = 1; i  r) {r = m; }} System.out.println ("Il prezzo corrente massimo è: + r); }}  

Spiegazione del codice:

  • Utilizzando il driver Chrome, individuiamo la tabella web e otteniamo il numero totale di righe utilizzando XPath ".//*[@id='leftcontainer'”/table/tbody/tr/td[1]"
  • Usando il ciclo for, iteriamo sul numero totale di righe e recuperiamo i valori uno per uno. Per ottenere la riga successiva usiamo (i + 1) in XPath
  • Confrontiamo il vecchio valore con il nuovo valore e il valore massimo viene stampato alla fine del ciclo for

Produzione

Esempio: ottieni tutti i valori di una tabella dinamica

Considera la seguente tabella http://demo.guru99.com/test/table.html

Il numero di colonne per ogni riga è diverso.

Qui le righe numero 1, 2 e 4 hanno 3 celle e la riga numero 3 ha 2 celle e la riga numero 5 ha 1 cella.

Dobbiamo ottenere i valori di tutte le celle

Ecco il codice:

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;public class NofRowsColmns {public static void main (String [] args) genera ParseException {WebDriver wd;System.setProperty ("webdriver.chrome.driver", "G: //chromedriver.exe");wd = new ChromeDriver ();wd.manage (). timeouts (). implicitlyWait (5, TimeUnit.SECONDS);wd.get ("http://demo.guru99.com/test/table.html");// Per individuare la tabella.WebElement mytable = wd.findElement (By.xpath ("/ html / body / table / tbody"));// Per individuare le righe della tabella.List  rows_table = mytable.findElements (By.tagName ("tr"));// Per calcolare il numero di righe nella tabella.int rows_count = rows_table.size ();// Il ciclo verrà eseguito fino all'ultima riga della tabella.for (int row = 0; row  Columns_row = rows_table.get (row) .findElements (By.tagName ("td"));// Per calcolare il numero di colonne (celle). In quella riga specifica.int colonne_count = Columns_row.size ();System.out.println ("Numero di celle nella riga" + riga + "sono" + conteggio_colonne);// Il ciclo verrà eseguito fino all'ultima cella di quella riga specifica.for (int colonna = 0; colonna 

Spiegazione del codice:

  • righe_count fornisce il numero totale di righe
  • per ogni riga otteniamo il numero totale di colonne utilizzando rows_table.get (row) .findElements (By.tagName ("td"));
  • Ripetiamo ogni colonna e ogni riga e recuperiamo i valori.

Uscita :

Sommario

  • By.xpath () è comunemente usato per accedere agli elementi della tabella.
  • Le tabelle web statiche in selenio sono di natura coerente. cioè hanno un numero fisso di righe così come i dati della cella.
  • Le tabelle Web dinamiche sono incoerenti, ovvero non hanno un numero fisso di dati di righe e celle.
  • Usando il driver web selenio, possiamo gestire facilmente le tabelle web dinamiche.
  • Selenium Webdriver ci consente di accedere a tabelle web dinamiche tramite il loro percorso X.

L'articolo è fornito da Kanchan Kulkarni.