Es gibt Zeiten, in denen wir auf Elemente (normalerweise Texte) zugreifen müssen, die sich in HTML-Tabellen befinden. Es ist jedoch sehr selten, dass ein Webdesigner einer bestimmten Zelle in der Tabelle eine ID oder ein Namensattribut bereitstellt. Daher können wir die üblichen Methoden wie "By.id ()", "By.name ()" oder "By.cssSelector ()" nicht verwenden. In diesem Fall besteht die zuverlässigste Option darin, mit der Methode "By.xpath ()" auf sie zuzugreifen.
In diesem Tutorial lernen Sie:
Wie schreibe ich XPath für Tabelle
Zugriff auf verschachtelte Tabellen
Attribute als Prädikate verwenden
Verknüpfung: Verwenden Sie Inspect Element für den Zugriff auf Tabellen in Selen
Wie schreibe ich XPath für Tabelle
Betrachten Sie den folgenden HTML-Code.
Wir werden XPath verwenden, um den inneren Text der Zelle zu erhalten, die den Text "vierte Zelle" enthält.
Schritt 1 - Legen Sie das übergeordnete Element (Tabelle) fest.
XPath-Locators in WebDriver beginnen immer mit einem doppelten Schrägstrich "//", gefolgt vom übergeordneten Element . Da es sich um Tabellen handelt, sollte das übergeordnete Element immer das
-Tag sein. Der erste Teil unseres XPath-Locators sollte daher mit "// table" beginnen.
Schritt 2 - Fügen Sie die untergeordneten Elemente hinzu
Das Element unmittelbar unter
ist
, also können wir sagen, dass
das "Kind" von
ist. Außerdem ist
das "Elternteil" von
. Alle untergeordneten Elemente in XPath werden rechts von ihrem übergeordneten Element platziert und durch einen Schrägstrich "/" wie im folgenden Code getrennt.
Schritt 3 - Prädikate hinzufügen
Das
-Element enthält zwei
-Tags. Wir können jetzt sagen, dass diese beiden
-Tags "Kinder" von
sind. Folglich können wir sagen, dass
das übergeordnete Element beider
-Elemente ist.
Eine andere Sache, die wir schließen können, ist, dass die beiden
-Elemente Geschwister sind. Geschwister beziehen sich auf untergeordnete Elemente mit demselben Elternteil .
Um zu dem
zu gelangen, auf das wir zugreifen möchten (das mit dem Text "vierte Zelle"), müssen wir zuerst auf das zweite
und nicht auf das erste zugreifen . Wenn wir einfach "// table / tbody / tr" schreiben, greifen wir auf das erste
-Tag zu.
Wie greifen wir dann auf das zweite
zu? Die Antwort darauf ist die Verwendung von Prädikaten .
Prädikate sind Zahlen oder HTML-Attribute in eckigen Klammern "[]", die ein untergeordnetes Element von seinen Geschwistern unterscheiden . Da das
, auf das wir zugreifen müssen, das zweite ist, werden wir "[2]" als Prädikat verwenden.
Wenn wir kein Prädikat verwenden, greift XPath auf das erste Geschwister zu. Daher können wir mit einem dieser XPath-Codes auf das erste
zugreifen.
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 aus den Schritten 2 und 3 gelernt haben, werden wir unseren XPath-Code so finalisieren, dass er dem unten gezeigten entspricht.
Nachdem wir den richtigen XPath-Locator haben, können wir bereits auf die gewünschte Zelle zugreifen und ihren inneren Text mit dem folgenden Code abrufen. Es wird davon ausgegangen, dass Sie den obigen HTML-Code als "newhtml.html" in Ihrem C-Laufwerk gespeichert haben.
Die gleichen Prinzipien, die oben diskutiert wurden, gelten für verschachtelte Tabellen. Verschachtelte Tabellen sind Tabellen, die sich in einer anderen Tabelle befinden . Ein Beispiel ist unten gezeigt.
Um mit dem Text "4-5-6" unter Verwendung der Konzepte "// parent / child" und Prädikatkonzepte aus dem vorherigen Abschnitt auf die Zelle 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.
Die folgende Ausgabe bestätigt, dass auf die innere Tabelle erfolgreich zugegriffen wurde.
Attribute als Prädikate verwenden
Wenn das Element tief in den 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 to Chicago" tief im HTML-Code der Mercury Tours-Homepage.
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" im ersten
des vierten
, daher sollte unser XPath wie unten gezeigt sein.
Denken Sie daran, dass wir beim Einfügen des XPath-Codes in Java den umgekehrten Schrägstrich "\" für die doppelten Anführungszeichen auf beiden Seiten von "270" verwenden sollten, damit das Zeichenfolgenargument von By.xpath () nicht vorzeitig beendet wird .
Wir sind jetzt bereit, mit dem folgenden Code auf diese Zelle zuzugreifen.
Verknüpfung: Verwenden Sie Inspect Element für den Zugriff auf Tabellen in Selen
Wenn die Anzahl oder das Attribut eines Elements äußerst schwierig oder unmöglich zu ermitteln ist, können Sie den XPath-Code am schnellsten mithilfe von Inspect Element generieren.
Betrachten Sie das folgende Beispiel von der Mercury Tours-Homepage.
Schritt 1
Verwenden Sie Firebug, um den XPath-Code zu erhalten.
Schritt 2
Suchen Sie nach dem ersten übergeordneten Element "table" und löschen Sie alles links davon.
Schritt 3
Stellen Sie dem verbleibenden Teil des Codes einen doppelten Schrägstrich "//" voran und kopieren Sie ihn in Ihren WebDriver-Code.
Mit dem folgenden WebDriver-Code kann der innere Text des Elements, auf das wir zugreifen, erfolgreich abgerufen werden.
By.xpath () wird häufig für den Zugriff auf Tabellenelemente verwendet.
Wenn das Element tief in den 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.
Attribute werden als Prädikate verwendet, indem ihnen das @ -Symbol vorangestellt wird.
Verwenden Sie Inspect Element für den Zugriff auf Tabellen in Selen