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.
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-Tabellen-Locator sollte daher mit „//table“ beginnen.
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.
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.
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.
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.
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.
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(); } }
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.
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.
Der folgende WebDriver-Code sollte in der Lage sein, den inneren Text der Zelle abzurufen, auf die wir zugreifen.
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.
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.
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.
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.
Wir können jetzt mit dem folgenden Code auf diese Zelle zugreifen.
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(); }
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.
Schritt 1
Verwenden Sie Firebug, um den XPath-Code abzurufen.
Schritt 2
Suchen Sie nach dem ersten übergeordneten Element „Tabelle“ und löschen Sie alles links davon.
Schritt 3
Stellen Sie dem verbleibenden Teil des Codes den doppelten Schrägstrich „//“ voran und kopieren Sie ihn in Ihren WebDriver-Code.
Der folgende WebDriver-Code kann den inneren Text des Elements, auf das wir zugreifen, erfolgreich abrufen.
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