Kuinka käsitellä dynaamisia verkkotaulukoita Selenium

Verkkotaulukko sisään Selenium

Verkossa on julkaistu kahdenlaisia ​​HTML-taulukoita.

  1. Staattiset taulukot: Tiedot ovat staattisia eli rivien ja sarakkeiden määrä on kiinteä.
  2. Dynaamiset taulukot: Tiedot ovat dynaamisia eli rivien ja sarakkeiden lukumäärä EI ole kiinteä.

Kuinka käsitellä dynaamista taulukkoa Selenium

Alla on esimerkki dynaamisesta verkkotaulukosta Selenium myynnissä. Syöttöpäivämääräsuodattimien perusteella rivien lukumäärää muutetaan. Se on siis luonteeltaan dynaaminen.

Käsittele dynaamista taulukkoa Selenium

Staattisen taulukon käsittely on helppoa, mutta dynaamisten taulukoiden käsittely sisään Selenium on hieman vaikeaa, koska rivit ja sarakkeet eivät ole vakioita.

X-Pathin käyttäminen Web-taulukkoelementtien paikantamiseen

Ennen kuin löydämme verkkoelementin, ymmärrämme ensin -

Mikä on verkkoelementti?

Verkkoelementit eivät ole mitään muuta kuin HTML-elementtejä, kuten tekstilaatikko, avattavat valintanapit, lähetyspainikkeet jne. Nämä HTML-elementit on kirjoitettu Alkaa -tunniste ja päättyy an loppu tunnisteita.

Esimerkiksi,

Ensimmäinen HTML-dokumenttini.

Vaiheet etsittävän verkkoelementin X-polun löytämiseksi.

Vaihe 1) Siirry Chromessa osoitteeseen https://demo.guru99.com/test/web-table-element.php

X-Pathin käyttäminen Web-taulukkoelementtien paikantamiseen

Vaihe 2) Napsauta hiiren kakkospainikkeella verkkoelementtiä, jonka x-polku haetaan. Meidän tapauksessamme napsauta hiiren kakkospainikkeella "Yritys" Valitse Tarkista vaihtoehto. Seuraava näyttö tulee näkyviin -

X-Pathin käyttäminen Web-taulukkoelementtien paikantamiseen

Vaihe 3) Napsauta korostettua verkkoelementtiä hiiren kakkospainikkeella > Valitse Kopioi -> Kopioi x-polku.

X-Pathin käyttäminen Web-taulukkoelementtien paikantamiseen

Vaihe 4) Käytä kopioitua X-polkua "//*[@id="leftcontainer"]/table/thead/tr/th [1] Selenium WebDriver elementin paikallistamiseksi.

Esimerkki: Hae rivien ja sarakkeiden lukumäärä Dynamic WebTable -taulukosta

Dynaamisen verkkotaulukon käsittelyn aikana Selenium, emme voi ennustaa sen rivien ja sarakkeiden määrää.

Käyttäminen Selenium web-ajuri, voimme löytää

  • Verkkotaulukon rivien ja sarakkeiden määrä Selenium
  • X-rivin tai Y-sarakkeen tiedot.

Alla on ohjelma rivien ja sarakkeiden kokonaismäärän hakemiseksi verkkotaulukon käsittelyä varten Selenium:

Hae rivien ja sarakkeiden määrä

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) throws ParseException {
    	WebDriver wd;
	  System.setProperty("webdriver.chrome.driver","G://chromedriver.exe");
	  wd= new ChromeDriver();
        wd.get("https://demo.guru99.com/test/web-table-element.php");         
        //No.of Columns
        List <webelement> col = wd.findElements(By.xpath(".//*[@id=\"leftcontainer\"]/table/thead/tr/th"));
        System.out.println("No of cols are : " +col.size()); 
        //No.of rows 
        List <webelement> rows = wd.findElements(By.xpath(".//*[@id='leftcontainer']/table/tbody/tr/td[1]")); 
        System.out.println("No of rows are : " + rows.size());
        wd.close();
    }
}

Koodin selitys:

  • Tässä olemme ensin ilmoittaneet Web Driver -objektiksi "wd" & alustaneet sen kromiohjaimeksi.
  • Käytämme listaa sarakkeiden kokonaismäärään sarakkeessa.
  • findElements-komennot palauttaa luettelon KAIKISTA määritettyä paikanninta vastaavista elementeistä
  • käyttämällä findElements- ja X-path //*[@id=\”leftcontainer\”]/table/thead/tr/th saamme kaikki sarakkeet
  • Samalla tavalla toistamme prosessin riveille.

lähtö:

Hae rivien ja sarakkeiden määrä

Esimerkki: Hae dynaamisen taulukon tietyn rivin ja sarakkeen soluarvo

Oletetaan, että tarvitsemme 3rd taulukon rivi ja sen toisen solun tiedot. Katso alla oleva taulukko -

Hae tietyn rivin ja sarakkeen soluarvo

Yllä olevassa taulukossa tietoja päivitetään säännöllisesti jonkin ajan kuluttua. Tiedot, joita yrität hakea, eroavat yllä olevasta kuvakaappauksesta. Koodi pysyy kuitenkin samana. Tässä on esimerkkiohjelma 3rd rivi ja 2nd sarakkeen tiedot.

Hae tietyn rivin ja sarakkeen soluarvo

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) throws ParseException {
    	WebDriver wd;
		System.setProperty("webdriver.chrome.driver","G://chromedriver.exe");
		 wd= new ChromeDriver();
		 wd.get("https://demo.guru99.com/test/web-table-element.php"); 
		 wd.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
		 WebElement baseTable = wd.findElement(By.tagName("table"));
		  
		 //To find third row of table
		 WebElement tableRow = baseTable.findElement(By.xpath("//*[@id=\"leftcontainer\"]/table/tbody/tr[3]"));
         String rowtext = tableRow.getText();
		 System.out.println("Third row of table : "+rowtext);
		    
		    //to get 3rd row's 2nd column data
		    WebElement cellIneed = tableRow.findElement(By.xpath("//*[@id=\"leftcontainer\"]/table/tbody/tr[3]/td[2]"));
		    String valueIneed = cellIneed.getText();
		    System.out.println("Cell value is : " + valueIneed); 
		    wd.close();
    }
}

Koodin selitys:

  • Taulukko sijoitetaan käyttämällä paikannusominaisuutta "tagname".
  • Käyttäminen XPath “//*[@id=\”leftcontainer\”]/table/tbody/tr[3]” etsi 3rd riville ja saa sen tekstin getText () -funktiolla
  • Etsi Xpath:n avulla "//*[@id=\"leftcontainer\”]/table/tbody/tr[3]/td[2] 2:n toinen solurd riville ja saa sen tekstin getText () -funktiolla

ulostulo:

Hae dynaamisen taulukon tietyn rivin ja sarakkeen soluarvo

Esimerkki: Hanki enimmäisarvo kaikista dynaamisen taulukon sarakkeen arvoista

Tässä esimerkissä saamme suurimman osan kaikista arvoista tietyssä sarakkeessa.

Katso seuraava taulukko -

Hanki enimmäisarvo kaikista dynaamisen taulukon sarakkeen arvoista

Tässä on koodi

Hanki enimmäisarvo kaikista dynaamisen taulukon sarakkeen arvoista

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;


public class MaxFromTable {
    public static void main(String[] args) throws ParseException {
    	WebDriver wd;
		System.setProperty("webdriver.chrome.driver","G://chromedriver.exe");
		 wd= new ChromeDriver();
		 wd.get("https://demo.guru99.com/test/web-table-element.php"); 
		 String max;
	     double m=0,r=0;
		 
	       //No. of Columns
	        List <webelement> col = wd.findElements(By.xpath(".//*[@id='leftcontainer']/table/thead/tr/th"));
	        System.out.println("Total No of columns are : " +col.size());
	        //No.of rows
	        List <webelement> rows = wd.findElements(By.xpath (".//*[@id='leftcontainer']/table/tbody/tr/td[1]"));
	        System.out.println("Total No of rows are : " + rows.size());
	        for (int i =1;i<rows.size();i++)
	        {    
	            max= wd.findElement(By.xpath("html/body/div[1]/div[5]/table/tbody/tr[" + (i+1)+ "]/td[4]")).getText();
	            NumberFormat f =NumberFormat.getNumberInstance(); 
	            Number num = f.parse(max);
	            max = num.toString();
	            m = Double.parseDouble(max);
	            if(m>r)
	             {    
	                r=m;
	             }
	        }
	        System.out.println("Maximum current price is : "+ r);
    }
}

</webelement></webelement>

Koodin selitys:

  • Chrome-ohjaimen avulla paikannamme verkkotaulukon ja saamme rivien kokonaismäärän käyttämällä XPath ".//*[@id='leftcontainer']/table/tbody/tr/td[1]"
  • For-silmukan avulla iteroimme rivien kokonaismäärän ja haemme arvot yksitellen. Saadaksesi seuraavan rivin käytämme XPathissa (i+1).
  • Vertaamme vanhaa arvoa uuteen arvoon ja maksimiarvo tulostetaan for-silmukan loppuun

ulostulo

Hanki enimmäisarvo kaikista dynaamisen taulukon sarakkeen arvoista

Esimerkki: Hanki kaikki dynaamisen taulukon arvot

Tarkastellaan seuraavaa taulukkoa: https://demo.guru99.com/test/table.html

Hanki kaikki dynaamisen taulukon arvot

Jokaisen rivin sarakkeiden määrä on erilainen.

Tässä riveillä 1, 2 ja 4 on 3 solua, ja rivillä 3 on 2 solua ja rivillä 5 on 1 solu.

Meidän on saatava kaikkien solujen arvot

Tässä on koodi:

Hanki kaikki dynaamisen taulukon arvot

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) throws ParseException {
    	WebDriver wd;
    	System.setProperty("webdriver.chrome.driver","G://chromedriver.exe");
    	wd = new ChromeDriver();
    	wd.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
    	wd.get("https://demo.guru99.com/test/table.html");
    	//To locate table.
    	WebElement mytable = wd.findElement(By.xpath("/html/body/table/tbody"));
    	//To locate rows of table. 
    	List < WebElement > rows_table = mytable.findElements(By.tagName("tr"));
    	//To calculate no of rows In table.
    	int rows_count = rows_table.size();
    	//Loop will execute till the last row of table.
    	for (int row = 0; row < rows_count; row++) {
    	    //To locate columns(cells) of that specific row.
    	    List < WebElement > Columns_row = rows_table.get(row).findElements(By.tagName("td"));
    	    //To calculate no of columns (cells). In that specific row.
    	    int columns_count = Columns_row.size();
    	    System.out.println("Number of cells In Row " + row + " are " + columns_count);
    	    //Loop will execute till the last cell of that specific row.
    	    for (int column = 0; column < columns_count; column++) {
    	        // To retrieve text from that specific cell.
    	        String celtext = Columns_row.get(column).getText();
    	        System.out.println("Cell Value of row number " + row + " and column number " + column + " Is " + celtext);
    	    }
    	    System.out.println("-------------------------------------------------- ");
    	}
   	}
}

Koodin selitys:

  • rivien_määrä antaa rivien kokonaismäärän
  • jokaiselle riville saamme sarakkeiden kokonaismäärän käyttämällä rows_table.get(row).findElements(By.tagName("td"));
  • Iteroimme jokaisen sarakkeen ja jokaisen rivin läpi ja haemme arvot.

ulostulo:

Hanki kaikki dynaamisen taulukon arvot

Yhteenveto

  • By.xpath() on yleisesti käytetty taulukkoelementtien käyttämiseen.
  • Staattiset verkkotaulukot sisään Selenium ovat luonteeltaan johdonmukaisia. eli niillä on kiinteä määrä rivejä sekä solutietoja.
  • Dynaamiset verkkotaulukot ovat epäjohdonmukaisia ​​eli niissä ei ole kiinteää määrää rivejä ja solutietoja.
  • Seleeniverkkoajurin avulla voimme käsitellä dynaamisia verkkotaulukoita helposti.
  • Selenium Webdriverin avulla voimme käyttää dynaamisia verkkotaulukoita niiden avulla X-polku. Seleenin verkkotaulukon käsittelyn ymmärtäminen on ratkaisevan tärkeää tehokkaan automaatiotestauksen kannalta.