Umgang mit Webtabellen in Selenium
โก Intelligente Zusammenfassung
Selenium Die Web-Tabellenverarbeitung ermรถglicht es QA-Ingenieuren, tabellarische Daten aus HTML-Zeilen und -Spalten mithilfe von XPath, CSS und Selenium 4 relative Locatoren. Dieser Artikel behandelt statische Tabellen, verschachtelte Tabellen, Attributprรคdikate und KI-Techniken fรผr dynamische Raster.

Was ist eine Webtabelle? Selenium?
A Webtabelle in Selenium Eine WebElement-Tabelle dient der tabellarischen Darstellung von Daten oder Informationen. Die angezeigten Daten kรถnnen statisch oder dynamisch sein. Auf Tabellenzellen und -zeilen wird รผber WebElement-Methoden in Kombination mit Selektoren zugegriffen. Ein typisches Beispiel ist die Produktspezifikationstabelle auf einer E-Commerce-Produktseite.
Lesen einer HTML-Webtabelle
Tester mรผssen hรคufig auf Elemente, meist Textwerte, innerhalb von HTML-Tabellen zugreifen. Webdesigner vergeben jedoch selten ID- oder Namensattribute fรผr einzelne Zellen. Daher funktionieren Methoden wie `By.id()`, `By.name()` oder `By.cssSelector()` in der Regel nicht. In diesem Fall ist `By.xpath()` die zuverlรคssigste Option, da sie die Eltern-Kind-Beziehungen innerhalb des Tabellen-Tags durchlรคuft.
Umgang mit Webtabellen in Selenium
Betrachten Sie den folgenden HTML-Code fรผr die Verarbeitung von Webtabellen Selenium.
Wir werden verwenden XPath um den inneren Text der Zelle zu erhalten, die den Text โvierte Zelleโ enthรคlt.
Schritt 1 โ Festlegen des รผbergeordneten Elements (Tabelle)
XPath-Locators in WebDriver beginnen immer mit einem doppelten Schrรคgstrich โ//โ, gefolgt vom รผbergeordneten Element.. Da es sich um Webtabellen in handelt Selenium, das รผbergeordnete Element sollte immer das sein Etikett. Der erste Teil unseres Selenium Der XPath-Tabellenlocator muss daher mit โ//tableโ beginnen.
Schritt 2 โ Untergeordnete Elemente hinzufรผgen
Das Element direkt darunter Ist , Also ist das Kind von Umgekehrt ist das Elternteil von Alle Kindelemente in XPath werden rechts neben ihrem Elternelement platziert und durch einen Schrรคgstrich โ/โ getrennt, wie unten dargestellt.
.png)
Schritt 3 โ Prรคdikate hinzufรผgen
Der Element enthรคlt zwei Tags. Diese beiden Tags sind Kinder von , Also ist der Elternteil von beiden. Die beiden Elemente sind Geschwister. Geschwister sind Kindelemente, die dasselbe Elternteil haben..
Um das zu erreichen die die โvierte Zelleโ enthรคlt, mรผssen wir zuerst darauf zugreifen. zweite nicht die erste. Wenn man nur โ//table/tbody/trโ schreibt, wรผrde man die erste Tabelle ansprechen. Etikett.
Wie greifen wir also auf die zweite zu? Die Antwort lautet: verwenden Prรคdikate. Prรคdikate sind Zahlen oder HTML-Attribute, die in eckigen Klammern โ[ ]โ eingeschlossen sind und ein Kindelement von seinen Geschwisterelementen unterscheiden.Da wir die zweite Zeile benรถtigen, verwenden wir โ[2]โ als Prรคdikat.
Lรคsst man das Prรคdikat weg, gibt XPath das erste Geschwisterelement zurรผck. Daher erreichen beide der folgenden XPath-Codes das erste Element. Die
Schritt 4 โ Fรผgen Sie die nachfolgenden untergeordneten Elemente mithilfe der entsprechenden Prรคdikate hinzu
Das nรคchste Element, das wir benรถtigen, ist das zweite. Durch Anwendung der Regeln aus Schritt 2 und 3 erhalten wir den unten gezeigten XPath.
Nachdem wir den korrekten XPath-Locator ermittelt haben, kรถnnen wir mithilfe des unten stehenden Codes auf die Zelle zugreifen und ihren Inhalt lesen. Dies setzt voraus, dass Sie die HTML-Seite unter dem Namen โnewhtml.htmlโ auf Ihrem Laufwerk C gespeichert haben.
public static void main(String[] args) {
String baseUrl = "https://demo.guru99.com/test/write-xpath-table.html";
WebDriver driver = new FirefoxDriver();
driver.get(baseUrl);
String innerText = driver.findElement(
By.xpath("//table/tbody/tr[2]/td[2]")).getText();
System.out.println(innerText);
driver.quit();
}
Auf verschachtelte Tabellen zugreifen
Die gleichen Prinzipien gelten auch fรผr verschachtelte Tabellen. Verschachtelte Tabellen sind Tabellen, die in einer anderen Tabelle platziert sind.. Ein Beispiel ist unten dargestellt.
Um auf die Zelle mit dem Text โ4-5-6โ zuzugreifen, kรถnnen wir mithilfe der Eltern-Kind- und Prรคdikatideen aus dem vorherigen Abschnitt den unten gezeigten XPath zusammensetzen.
Der unten stehende WebDriver-Code ruft den inneren Text der Zielzelle ab.
public static void main(String[] args) {
String baseUrl = "https://demo.guru99.com/test/accessing-nested-table.html";
WebDriver driver = new FirefoxDriver();
driver.get(baseUrl);
String innerText = driver.findElement(
By.xpath("//table/tbody/tr[2]/td[2]/table/tbody/tr/td[2]")).getText();
System.out.println(innerText);
driver.quit();
}
Die folgende Ausgabe bestรคtigt, dass erfolgreich auf die innere Tabelle zugegriffen wurde.
Attribute als Prรคdikate verwenden
Befindet sich das Element tief im HTML-Code, wo das Zรคhlen von Geschwisterelementen mรผhsam wird, kรถnnen wir stattdessen das eindeutige Attribut dieses Elements verwenden.
Im folgenden Beispiel ist die Zelle โNew York nach Chicagoโ weit im Inneren vergraben. Mercury Homepage von Tours.
Wir kรถnnen das eindeutige Attribut der Tabelle (width=โ270โณ) als Prรคdikat verwenden. Attribute werden als Prรคdikate verwendet, indem ihnen das @-Symbol vorangestellt wirdIm obigen Beispiel befindet sich die Zelle โNew York nach Chicagoโ im ersten des vierten Unser XPath sollte also wie der unten gezeigte aussehen.
Denken Sie daran, dass Sie beim Einfรผgen des XPath-Ausdrucks Folgendes beachten sollten: JavaUm die doppelten Anfรผhrungszeichen um โ270โ zu maskieren, verwenden Sie einen Backslash, damit die Zeichenkette By.xpath() nicht vorzeitig beendet wird.
Wir kรถnnen jetzt mit dem folgenden Code auf diese Zelle zugreifen.
public static void main(String[] args) {
String baseUrl = "https://demo.guru99.com/test/newtours/";
WebDriver driver = new FirefoxDriver();
driver.get(baseUrl);
String innerText = driver.findElement(By
.xpath("//table[@width=\"270\"]/tbody/tr[4]/td"))
.getText();
System.out.println(innerText);
driver.quit();
}
Verknรผpfung: Verwenden Sie Inspect Element fรผr den Zugriff auf Tabellen in Selenium
Wenn der Index oder ein Attribut eines Elements schwer zu ermitteln ist, lรคsst sich der XPath am schnellsten mit Hilfe der Funktion โElement untersuchenโ in den Entwicklertools moderner Browser generieren.
Betrachten Sie das folgende Beispiel aus dem Mercury Homepage von Tours.
Schritt 1:
Klicken Sie mit der rechten Maustaste auf die Zielzelle und wรคhlen Sie โUntersuchenโ, um den DOM-Pfad anzuzeigen. Kopieren Sie anschlieรend den vollstรคndigen XPath.
Schritt 2:
Suchen Sie nach dem ersten รผbergeordneten Element โTabelleโ und lรถschen Sie alles links davon.
Schritt 3:
Setzen Sie dem verbleibenden XPath einen doppelten Schrรคgstrich โ//โ voran und kopieren Sie ihn in Ihren WebDriver-Code.
Der unten stehende WebDriver-Code ruft den inneren Text des tief verschachtelten Elements ab.
public static void main(String[] args) {
String baseUrl = "https://demo.guru99.com/test/newtours/";
WebDriver driver = new FirefoxDriver();
driver.get(baseUrl);
String innerText = driver.findElement(By
.xpath("//table/tbody/tr/td[2]"
+ "//table/tbody/tr[4]/td/"
+ "table/tbody/tr/td[2]/"
+ "table/tbody/tr[2]/td[1]/"
+ "table[2]/tbody/tr[3]/td[2]/font"))
.getText();
System.out.println(innerText);
driver.quit();
}
Wie man Zeilen und Spalten in einer dynamischen Webtabelle zรคhlt
Dynamische Webtabellen, wie Dashboards oder Suchergebnisse, rendern bei jedem Laden eine unterschiedliche Anzahl von Zeilen. Um dies zu handhaben, verwenden Sie findElements um alle Die Daten werden in einer Liste gespeichert und anschlieรend in einer Schleife durch jede Zelle gelesen. Der folgende Codeabschnitt zรคhlt die Zeilen und liest jede Zelle einer Tabelle, deren ID โcustomersโ lautet.
List<WebElement> rows = driver.findElements(
By.xpath("//table[@id='customers']//tr"));
System.out.println("Total rows: " + rows.size());
for (int i = 1; i <= rows.size(); i++) {
List<WebElement> cells = driver.findElements(
By.xpath("//table[@id='customers']//tr[" + i + "]/td"));
for (WebElement cell : cells) {
System.out.println(cell.getText());
}
}
Wickeln Sie den Ortungssensor in ein WebDriverWait und visibilityOfAllElementsLocatedBy Wenn die Tabelle per AJAX geladen wird, werden dadurch veraltete Elementreferenzen in langsam rendernden Tabellen vermieden.
Selenium 4 Relative Locators fรผr Webtabellen
Selenium Version 4 fรผhrte relative Selektoren ein, die Elemente anhand ihrer visuellen Position ansprechen. Sie sind nรผtzlich, wenn XPath-Indizes aufgrund einer Neuanordnung von Zeilen nicht mehr funktionieren. Die Methoden above(), below(), toLeftOf(), toRightOf() und near() Alle akzeptieren ein Anchor-WebElement.
import static org.openqa.selenium.support.locators.RelativeLocator.with;
WebElement emailHeader = driver.findElement(By.xpath("//th[text()='Email']"));
WebElement emailCell = driver.findElement(
with(By.tagName("td")).below(emailHeader));
System.out.println(emailCell.getText());
Relative Locators bleiben auch bei verรคnderter Spaltenreihenfolge lesbar. Fรผr optimale Ergebnisse auf datenintensiven Seiten sollten sie mit expliziten Wartezeiten kombiniert werden.
KI-Tools fรผr die Handhabung dynamischer Webtabellen
KI-gestรผtzte Testplattformen reduzieren den Wartungsaufwand fรผr Ortungsgerรคte in Netzen, die sich hรคufig รคndern. Tools wie Testim, Mab und Funktionalisieren Mithilfe von Computer Vision und DOM-Modellen werden Spaltenverschiebungen und selbstheilende Locatoren erkannt. Zeilen werden anhand von Headertext und Zellenรคhnlichkeit anstatt fester XPath-Indizes identifiziert.
Fรผr reine Selenium Projekte, Bibliotheken wie Healenium Umschlieรen Sie den WebDriver und korrigieren Sie fehlerhafte Selektoren zur Laufzeit. Kombinieren Sie diese Tools mit WebDriverWait, um dynamische Tabellenskripte stabil zu halten, ohne Selektoren nach jeder UI-รnderung neu schreiben zu mรผssen.
Zusammenfassung
- By.xpath() ist die zuverlรคssigste Methode, um auf Zellen einer Webtabelle zuzugreifen. Selenium.
- Wenn das Zรคhlen von Geschwistern schwierig ist, verwenden Sie ein eindeutiges Attribut als Prรคdikat, dem das @-Symbol vorangestellt wird.
- findElements gibt eine Liste zurรผck das die Zeilenzรคhlung in dynamischen Tabellen unterstรผtzt.
- Selenium 4 relative Locatoren (oben, unten, nahe) reduzieren die Abhรคngigkeit von positionellen XPath-Ausdrรผcken.
- Die Funktion โElement untersuchenโ in den Entwicklertools beschleunigt die XPath-Generierung fรผr tiefliegende Zellen.
- KI-Tools wie Testim, Mabl und Healenium selbstheilende Lokalisierungsfunktionen fรผr sich รคndernde Raster.

.png)
.png)



















