Ich habe eine Tabelle mit 9 Zeilen und 6 Spalten auf meiner Webseite. Ich möchte nach einem Text "MakeGoodDisabled-Programwise_09_44_38_461 (n)" suchen und den xpath der Zelle abrufen. Ich habe Folgendes verwendet, aber es schlägt fehl, weil es den Text auf der Seite nicht finden kann. Können Sie bitte helfen? Ich benutze Selenium Webdriver Junit, um dies zu programmieren.
%Vor%Meine Absicht ist es, einen Text in einer Tabelle zu finden und den entsprechenden Wert für die nächste Spalte zu erhalten die gleiche Reihe. Ich dachte, dass ich die gefundene Spaltennummer ersetzen werde, indem ich den xpath mit abrufe die Spaltennummer, die ich möchte. Gibt es einen besseren Weg, es zu tun?
Natürlich gibt es einen Weg. Hier ist eine mögliche Lösung.
Holen Sie sich alle Zeilen:
%Vor% Jetzt können Sie einfach zu diesem bestimmten Index für die anderen Zeilen wechseln; Oder Sie können xpath wie .../tr/td[voila]
verwenden, um alle Zellen für diese bestimmte Spalte abzurufen.
Ich habe einen Ansatz geschrieben, bitte nimm es nicht als echten Arbeitscode!
Der XPath eines Elements ist kein definitiver Wert. Ein Element kann von vielen XPaths gefunden werden.
Sie können Webdriver nicht verwenden, um einen XPath zu extrahieren, und selbst wenn Sie könnten, ist es unwahrscheinlich, dass es der effizienteste oder sinnvollste ist, der nur vom Automator definiert werden kann.
Die Frage, die Sie gestellt haben, ergibt für mich keinen Sinn. Ich schätze, es könnte einen starken Grund geben, dass du es "willst"!
Ihre Codezeile
%Vor%gibt nichts zurück, da in HTML-Elementen kein Attribut "xpath" vorhanden ist. Bitte machen Sie Ihre Grundlagen klar, was xpath bedeutet?
wenn ich ein HTML-Element habe, wie unten gezeigt
%Vor%Ich kann die Werte von Attribut mit
erhalten %Vor%Dies gibt mir den Wert des 'value' Attributs
oder
%Vor%wie oben!
Wenn Sie ein Attribut für Ihr Element mit dem Namen "xpath" haben, können Sie Folgendes tun:
%Vor%Obwohl Sie durch die Geräusche davon versuchen, etwas anderes hier zu erreichen, haben Sie noch nicht mit uns geteilt. Möchtest du, dass Selen einen XPath für dich erstellt? Es kann nicht.
Sie können XPaths mit JavaScript erzeugen:
%Vor% Wenn Sie dieses JavaScript in einen String namens getXPaths
und dann in Java einfügen, können Sie es wie folgt ausführen:
Es gibt ein Array und nicht einen String zurück, weil wenn Ihre Seite zufällig weniger oder mehr Elemente mit passendem Tagname / innerText hat, Sie es wissen wollen. Sie können an der Größe des Arrays erkennen.
Fast die gleiche Situation für mich:
Ich habe ein Element in der Tabelle, aber ich weiß nicht, in welcher Spalte es sich befindet (wie ein Benutzername für alle Benutzernamen). Ich muss bestimmte Zeichenfolge mit Benutzernamen finden und klicken Sie auf "Aktivieren" nur für diesen Benutzer. (Der Benutzername-Text befindet sich in der zweiten Spalte, die td [2] ist und die Schaltfläche in der 5. Spalte findet, die td [5] ist). Also muss ich alle Spalten nacheinander ausführen, um den Benutzer zu finden, und dann auf den Button klicken:
%Vor%JavaScript-Funktionen zum Erstellen von XPath
XPath / locator ist eine Möglichkeit, ein Element durch Navigieren durch die Baumstruktur zu adressieren.
Absoluter XPath (/): / html / body / div [5] / div [4]
WebElement XPath:
%Vor%MouseEvent XPath:
%Vor%Relativer xpath (//): // div [@ id = 'soziale Medien'] / ul / li [3] / a
// Element.TagName [@ id="idvalue" und @ class="classValue" und text ()="innerHTML data"] ODER können Sie verwenden. (dot),. ist ein Alias für text (), [.="innerHTML data"] Wenn Sie wissen, dass der gesuchte Inhalt irgendwo innerhalb des angegebenen Tags liegt, können Sie diesen verwenden
Beispiel, das in der Konsole ausgeführt wird:
%Vor%Ich denke, dass es keine spezielle Funktion gibt, um den xpath des gesuchten Elements zu erhalten. Dazu müssen Sie zuerst das Element manuell finden und dann den xpath durch die getXpath-Funktionen holen.
Tags und Links selenium selenium-webdriver junit