Umgang mit dynamischen Webtabellen mit Selenium WebDriver

Inhaltsverzeichnis:

Anonim

Es gibt zwei Arten von HTML-Tabellen, die im Web veröffentlicht werden.

  1. Statische Tabellen : Daten sind statisch, dh die Anzahl der Zeilen und Spalten ist festgelegt.
  2. Dynamische Tabellen : Daten sind dynamisch, dh die Anzahl der Zeilen und Spalten ist NICHT festgelegt.

Jetzt lernen wir, wie man mit dynamischen Tabellen in Selen umgeht:

Unten finden Sie ein Beispiel für eine dynamische Webtabelle in Selenium for Sales. Basierend auf den Eingabedatum-Filtern wird die Anzahl der Zeilen geändert. Es ist also dynamischer Natur.

Die Handhabung statischer Tabellen ist einfach, aber die Handhabung dynamischer Tabellen in Selen ist etwas schwierig, da Zeilen und Spalten nicht konstant sind.

In diesem Tutorial lernen Sie:

  • Verwenden von X-Path zum Suchen von Webtabellenelementen
  • Beispiel: Abrufen der Anzahl der Zeilen und Spalten aus Dynamic WebTable
  • Beispiel: Abrufen des Zellenwerts einer bestimmten Zeile und Spalte der dynamischen Tabelle
  • Beispiel: Maximum aller Werte in einer Spalte der dynamischen Tabelle abrufen
  • Beispiel: Rufen Sie alle Werte einer dynamischen Tabelle ab

Verwenden von X-Path zum Suchen von Webtabellenelementen

Bevor wir das Webelement finden, wollen wir zunächst verstehen:

Was ist ein Webelement?

Webelemente sind nichts anderes als HTML-Elemente wie Textfelder, Dropdown-Optionsfelder, Senden-Schaltflächen usw. Diese HTML-Elemente werden mit einem Start- Tag geschrieben und enden mit einem End- Tag.

Zum Beispiel,

Mein erstes HTML-Dokument

.

Schritte zum Abrufen des X-Pfads des Webelements, das wir suchen möchten.

Schritt 1) Gehen Sie in Chrome zu http://demo.guru99.com/test/web-table-element.php

Schritt 2) Klicken Sie mit der rechten Maustaste auf das Webelement, dessen x-Pfad abgerufen werden soll. In unserem Fall klicken Sie mit der rechten Maustaste auf "Firma". Wählen Sie die Option "Prüfen". Der folgende Bildschirm wird angezeigt -

Schritt 3) Klicken Sie mit der rechten Maustaste auf das markierte Webelement> Wählen Sie Kopieren -> Option x-Pfad kopieren.

Schritt 4) Verwenden Sie den kopierten X-Pfad "// * [@ id =" leftcontainer "] / table / thead / tr / th [1]" in Selenium WebDriver, um das Element zu suchen.

Beispiel: Abrufen der Anzahl der Zeilen und Spalten aus Dynamic WebTable

Während die dynamische Behandlung von Webtabellen in Selenium die Anzahl der Zeilen und Spalten nicht vorhersagen kann.

Mit dem Selenium-Webtreiber können wir finden

  • Anzahl der Zeilen und Spalten der Webtabelle in Selen
  • Daten der X-Zeile oder Y-Spalte.

Unten finden Sie ein Programm zum Abrufen der Gesamtzahl der Zeilen und Spalten für die Verarbeitung von Webtabellen in Selen:

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;öffentliche Klasse Noofrowsandcols {public static void main (String [] args) löst ParseException aus {WebDriver wd;System.setProperty ("webdriver.chrome.driver", "G: //chromedriver.exe");wd = neuer ChromeDriver ();wd.get ("http://demo.guru99.com/test/web-table-element.php");// Anzahl SpaltenListe  col = wd.findElements (By.xpath (".//*[@ id =" leftcontainer "] / table / thead / tr / th"));System.out.println ("Anzahl der Spalten sind: + col.size ());// Anzahl der ZeilenListe  rows = wd.findElements (By.xpath (".//*[@ id = 'leftcontainer'] / table / tbody / tr / td [1]")); System.out.println ("Anzahl der Zeilen sind: + rows.size ()); wd.close (); }}  

Code Erläuterung:

  • Hier haben wir zuerst das Web-Treiber-Objekt "wd" deklariert und es auf den Chrome-Treiber initialisiert.
  • Wir verwenden List , um die Gesamtzahl der Spalten in "col" zu ermitteln.
  • Die Befehle findElements geben eine Liste ALLER Elemente zurück, die dem angegebenen Locator entsprechen
  • Mit findElements und X-path // * [@ id = "leftcontainer"] / table / thead / tr / th erhalten wir alle Spalten
  • Ebenso wiederholen wir den Vorgang für Zeilen.

Ausgabe:

Beispiel: Abrufen des Zellenwerts einer bestimmten Zeile und Spalte der dynamischen Tabelle

Nehmen wir an, wir benötigen die dritte Zeile der Tabelle und die Daten der zweiten Zelle. Siehe die folgende Tabelle

In der obigen Tabelle werden die Daten nach einiger Zeit regelmäßig aktualisiert. Die Daten, die Sie abrufen möchten, unterscheiden sich vom obigen Screenshot. Der Code bleibt jedoch gleich. Hier ist ein Beispielprogramm die 3 zu bekommen rd Zeile und 2 nd Spalte Daten.

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;öffentliche Klasse RowandCell {public static void main (String [] args) löst ParseException aus {WebDriver wd;System.setProperty ("webdriver.chrome.driver", "G: //chromedriver.exe");wd = neuer 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"));// Um ​​die dritte Tabellenzeile zu findenWebElement tableRow = baseTable.findElement (By.xpath ("// * [@ id =" leftcontainer "] / table / tbody / tr [3]"));String rowtext = tableRow.getText ();System.out.println ("Dritte Tabellenzeile: + Zeilentext);// um die Daten der 2. Spalte der 3. Zeile abzurufenWebElement cellIneed = tableRow.findElement (By.xpath ("// * [@ id =" leftcontainer "] / table / tbody / tr [3] / td [2]"));String valueIneed = cellIneed.getText ();System.out.println ("Zellenwert ist: + valueIneed);wd.close ();}}}}

Code Erläuterung:

  • Die Tabelle wird mithilfe der Locator-Eigenschaft "tagname" gefunden.
  • Mit XPath "// * [@ id = \" leftcontainer \ "] / table / tbody / tr [3]" , um die 3 finden rd Reihe und bekommt seinen Text mit getText () Funktion
  • Mit XPath "// * [@ id = \" leftcontainer \ "] / table / tbody / tr [3] / td [2]" , um die zweite Zelle in 3 finden rd Reihe und bekommt seinen Text mit getText () Funktion

Ausgabe :

Beispiel: Maximum aller Werte in einer Spalte der dynamischen Tabelle abrufen

In diesem Beispiel erhalten wir das Maximum aller Werte in einer bestimmten Spalte.

Siehe folgende Tabelle -

Hier ist der Code

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;öffentliche Klasse MaxFromTable {public static void main (String [] args) löst ParseException aus {WebDriver wd;System.setProperty ("webdriver.chrome.driver", "G: //chromedriver.exe");wd = neuer ChromeDriver ();wd.get ("http://demo.guru99.com/test/web-table-element.php");String max;doppeltes m = 0, r = 0;//Nein. von SpaltenListe  col = wd.findElements (By.xpath (".//*[@ id = 'leftcontainer'] / table / thead / tr / th"));System.out.println ("Gesamtzahl der Spalten sind: + col.size ());// Anzahl der ZeilenListe  rows = wd.findElements (By.xpath (".//*[@id='leftcontainer'‹/table/tbody/tr/td[1]")); System.out.println ("Gesamtzahl der Zeilen sind: + rows.size ()); für (int i = 1; i  r) {r = m; }} System.out.println ("Maximaler aktueller Preis ist: + r); }}  

Code Erläuterung:

  • Mit dem Chrome-Treiber suchen wir die Webtabelle und ermitteln mit XPath die Gesamtzahl der Zeilen. ".//*[@Id='leftcontainer'‹/table/tbody/tr/td[1]"
  • Mit der for-Schleife durchlaufen wir die Gesamtzahl der Zeilen und rufen nacheinander Werte ab. Um die nächste Zeile zu erhalten, verwenden wir (i + 1) in XPath
  • Wir vergleichen den alten Wert mit dem neuen Wert und der Maximalwert wird am Ende der for-Schleife gedruckt

Ausgabe

Beispiel: Rufen Sie alle Werte einer dynamischen Tabelle ab

Betrachten Sie die folgende Tabelle http://demo.guru99.com/test/table.html

Die Anzahl der Spalten für jede Zeile ist unterschiedlich.

Hier haben die Zeilennummern 1, 2 und 4 3 Zellen und die Zeilennummern 3 2 Zellen und die Zeilennummern 5 1 Zellen.

Wir müssen Werte aller Zellen erhalten

Hier ist der Code:

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;öffentliche Klasse NofRowsColmns {public static void main (String [] args) löst ParseException aus {WebDriver wd;System.setProperty ("webdriver.chrome.driver", "G: //chromedriver.exe");wd = neuer ChromeDriver ();wd.manage (). timeouts (). implicitlyWait (5, TimeUnit.SECONDS);wd.get ("http://demo.guru99.com/test/table.html");// Tabelle suchen.WebElement mytable = wd.findElement (By.xpath ("/ html / body / table / tbody"));// Tabellenzeilen suchen.List  rows_table = mytable.findElements (By.tagName ("tr"));// Anzahl der Zeilen in der Tabelle berechnen.int rows_count = rows_table.size ();// Die Schleife wird bis zur letzten Tabellenzeile ausgeführt.for (int row = 0; row  Columns_row = rows_table.get (row) .findElements (By.tagName ("td"));// Anzahl der Spalten (Zellen) berechnen. In dieser bestimmten Zeile.int column_count = Columns_row.size ();System.out.println ("Anzahl der Zellen in Zeile" + Zeile + "sind" + Spaltenanzahl);// Die Schleife wird bis zur letzten Zelle dieser bestimmten Zeile ausgeführt.for (int column = 0; column 

Code Erläuterung:

  • rows_count gibt die Gesamtzahl der Zeilen an
  • Für jede Zeile erhalten wir die Gesamtzahl der Spalten mithilfe von rows_table.get (row) .findElements (By.tagName ("td"));
  • Wir durchlaufen jede Spalte und jede Zeile und rufen Werte ab.

Ausgabe :

Zusammenfassung

  • By.xpath () wird häufig für den Zugriff auf Tabellenelemente verwendet.
  • Statische Webtabellen in Selen sind konsistenter Natur. dh sie haben eine feste Anzahl von Zeilen sowie Zellendaten.
  • Dynamische Webtabellen sind inkonsistent, dh sie haben keine feste Anzahl von Zeilen- und Zellendaten.
  • Mit dem Selenium-Webtreiber können wir dynamische Webtabellen problemlos verarbeiten.
  • Mit Selenium Webdriver können wir über ihren X-Pfad auf dynamische Webtabellen zugreifen

Der Artikel wurde von Kanchan Kulkarni verfasst.