Umgang mit Webtabellen in Selenium WebTreiber

Was ist eine Webtabelle? Selenium?

A Webtabelle in Selenium ist ein WebElement, das zur tabellarischen Darstellung von Daten oder Informationen verwendet wird. Die angezeigten Daten oder Informationen können entweder statisch oder dynamisch sein. Auf Webtabellen und ihre Elemente kann über WebElement-Funktionen und Locators in zugegriffen werden. Selenium. Ein typisches Beispiel für eine Webtabelle wären Produktspezifikationen, die auf einer E-Commerce-Plattform angezeigt werden.

Lesen einer HTML-Webtabelle

Es gibt Zeiten, in denen wir auf Elemente (normalerweise Texte) zugreifen müssen, die sich in HTML-Tabellen befinden. Es kommt jedoch sehr selten vor, dass ein Webdesigner einer bestimmten Zelle in der Tabelle ein ID- oder Namensattribut zur Verfügung stellt. Daher können wir die üblichen Methoden wie „By.id()“, „By.name()“ oder „By.cssSelector()“ nicht verwenden. In diesem Fall ist der Zugriff über die Methode „By.xpath()“ die zuverlässigste Möglichkeit.

Umgang mit Webtabellen in Selenium

Betrachten Sie den folgenden HTML-Code für die Verarbeitung von Webtabellen Selenium.

So schreiben Sie XPath für eine Tabelle in Selenium

Wir werden verwenden XPath um den inneren Text der Zelle zu erhalten, die den Text „vierte Zelle“ enthält.

So schreiben Sie XPath für eine Tabelle in Selenium

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-Tabellen-Locator sollte daher mit „//table“ beginnen.

Selenium Beispiel für eine Webtabelle

Schritt 2 – Untergeordnete Elemente hinzufügen

Das Element direkt darunter Ist also können wir das sagen ist das „Kind“ von . Und auch, ist das „Elternteil“ von . Alle untergeordneten Elemente in XPath werden rechts von ihrem übergeordneten Element platziert und durch einen Schrägstrich „/“ getrennt, wie im unten gezeigten Code.

Selenium Beispiel für eine Webtabelle

Schritt 3 – Prädikate hinzufügen

Der Element enthält zwei Stichworte. Wir können jetzt sagen, dass diese beiden Tags sind „Kinder“ von . Folglich können wir das sagen ist das übergeordnete Element beider Elemente.

Eine andere Sache, aus der wir schließen können, ist, dass die beiden Elemente sind Geschwister. Geschwister beziehen sich auf untergeordnete Elemente, die dasselbe übergeordnete Element haben.

Hinkommen auf die wir zugreifen möchten (die mit dem Text „vierte Zelle“), müssen wir zuerst auf die zugreifen zweite und nicht der erste. Wenn wir einfach „//table/tbody/tr“ schreiben, greifen wir auf das erste zu Etikett.

Wie greifen wir also auf die zweite zu? Dann? Die Antwort darauf ist die Verwendung Prädikate.

Prädikate sind Zahlen oder HTML-Attribute, die in eckige Klammern „[ ]“ eingeschlossen sind und ein untergeordnetes Element von seinen Geschwistern unterscheiden.. Seit der auf die wir zugreifen müssen, ist die zweite, wir werden „[2]“ als Prädikat verwenden.

Selenium Beispiel für eine Webtabelle

Wenn wir kein Prädikat verwenden, greift XPath auf das erste Geschwisterelement zu. Daher können wir auf den ersten zugreifen Verwenden Sie einen dieser XPath-Codes.

Selenium Webtabelle mit XPath

Schritt 4 – Fügen Sie die nachfolgenden untergeordneten Elemente mithilfe der entsprechenden Prädikate hinzu

Das nächste Element, auf das wir zugreifen müssen, ist das zweite . Unter Anwendung der Prinzipien, die wir in den Schritten 2 und 3 gelernt haben, werden wir unseren XPath-Code so finalisieren, dass er wie der unten gezeigte aussieht.

Web-Tabelle in Selenium mit Xpath

Da wir nun den richtigen XPath-Locator haben, können wir bereits auf die gewünschte Zelle zugreifen und ihren inneren Text mithilfe des folgenden Codes abrufen. Es wird davon ausgegangen, dass Sie den obigen HTML-Code als „newhtml.html“ auf Ihrem Laufwerk C gespeichert haben.

Web-Tabelle in Selenium mit Xpath

public static void main(String[] args) {
	String baseUrl = "http://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();
	}
}

Web-Tabelle in Selenium mit Xpath

Auf verschachtelte Tabellen zugreifen

Für verschachtelte Tabellen gelten die gleichen oben erläuterten Prinzipien. Verschachtelte Tabellen sind Tabellen, die sich innerhalb einer anderen Tabelle befinden. Ein Beispiel ist unten dargestellt.

So greifen Sie auf verschachtelte Tabellen zu Selenium

Um mithilfe der Konzepte „//parent/child“ und „Prädikat“ aus dem vorherigen Abschnitt auf die Zelle mit dem Text „4-5-6“ zuzugreifen, sollten wir in der Lage sein, den folgenden XPath-Code zu erstellen.

So greifen Sie auf verschachtelte Tabellen zu Selenium


Der folgende WebDriver-Code sollte in der Lage sein, den inneren Text der Zelle abzurufen, auf die wir zugreifen.

Zugreifen auf verschachtelte Tabellen in Selenium

public static void main(String[] args) {
	String baseUrl = "http://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.

Zugreifen auf verschachtelte Tabellen in Selenium

Attribute als Prädikate verwenden

Wenn das Element tief im HTML-Code geschrieben ist, sodass die für das Prädikat zu verwendende Zahl sehr schwer zu bestimmen ist, können wir stattdessen das eindeutige Attribut dieses Elements verwenden.

Im folgenden Beispiel befindet sich die Zelle „New York nach Chicago“ tief in Mercury HTML-Code der Homepage der Tour.

Selenium Beispiel für eine Webtabelle mit Attributen als Prädikaten

Selenium Beispiel für eine Webtabelle mit Attributen als Prädikaten

In diesem Fall können wir das eindeutige Attribut der Tabelle (width=“270“) als Prädikat verwenden. Attribute werden als Prädikate verwendet, indem ihnen das @-Symbol vorangestellt wird. Im obigen Beispiel befindet sich die Zelle „New York nach Chicago“ in der ersten des vierten , und daher sollte unser XPath wie unten gezeigt aussehen.

Selenium Beispiel einer Webtabelle mit Attributen als Prädikaten

Denken Sie daran, dass, wenn wir den XPath-Code einfügen Javasollten wir für die doppelten Anführungszeichen auf beiden Seiten von „270“ das Escape-Zeichen „Backward Slash“ „\“ verwenden, damit das String-Argument von By.xpath() nicht vorzeitig beendet wird.

Selenium Beispiel einer Webtabelle mit Attributen als Prädikaten

Wir können jetzt mit dem folgenden Code auf diese Zelle zugreifen.

Selenium Beispiel einer Webtabelle mit Attributen als Prädikaten

public static void main(String[] args) {
	String baseUrl = "http://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();
}

Selenium Beispiel einer Webtabelle mit Attributen als Prädikaten

Verknüpfung: Verwenden Sie Inspect Element für den Zugriff auf Tabellen in Selenium

Wenn die Nummer oder das Attribut eines Elements äußerst schwierig oder gar nicht zu ermitteln ist, ist die Verwendung von Inspect Element der schnellste Weg, den XPath-Code zu generieren.

Betrachten Sie das folgende Beispiel aus Mercury Homepage von Tours.

Selenium Beispiel einer Webtabelle mit Attributen als Prädikaten

Schritt 1

Verwenden Sie Firebug, um den XPath-Code abzurufen.

Selenium Beispiel einer Webtabelle mit Attributen als Prädikaten

Schritt 2

Suchen Sie nach dem ersten übergeordneten Element „Tabelle“ und löschen Sie alles links davon.

Selenium Beispiel einer Webtabelle mit Attributen als Prädikaten

Schritt 3

Stellen Sie dem verbleibenden Teil des Codes den doppelten Schrägstrich „//“ voran und kopieren Sie ihn in Ihren WebDriver-Code.

Selenium Beispiel einer Webtabelle mit Attributen

Der folgende WebDriver-Code kann den inneren Text des Elements, auf das wir zugreifen, erfolgreich abrufen.

Selenium Beispiel einer Webtabelle mit Attributen

public static void main(String[] args) {
	String baseUrl = "http://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();
}

Zusammenfassung

  • By.xpath() wird häufig verwendet, um auf Elemente von WebTable zuzugreifen Selenium.
  • Wenn das Element tief im HTML-Code geschrieben ist, sodass die für das Prädikat zu verwendende Zahl sehr schwer zu bestimmen ist, können wir stattdessen das eindeutige Attribut dieses Elements verwenden Selenium Tabellenelement abrufen.
  • Attribute werden als Prädikate verwendet, indem ihnen das @-Symbol vorangestellt wird.
  • Verwenden Sie Inspect Element für den Zugriff auf WebTable in Selenium