Selenium, xpath entsprechen einer Tabellenzeile mit mehreren Elementen
Ich versuche zu finden, eine Selen/PHP XPath für die Anpassung einer Zeile in der Tabelle enthält, die mehrere Elemente (text-und form-Elemente).
Beispiel:
<table class="foo">
<tr>
<td>Car</td><td>123</td><td><input type="submit" name="s1" value="go"></td>
</tr>
</table>
Dies funktioniert für eine einzelne text-element:
$this->isElementPresent( "//table/tbody/tr/td[contains(text(), 'Car')]" );
während dieses NICHT (weglassen /td locator):
$this->isElementPresent( "//table/tbody/tr[contains(text(), 'Car')]" );
und so, das wird offensichtlich nicht arbeiten entweder für mehrere Elemente:
$this->isElementPresent( "//table/tbody/tr[contains(text(), 'Car')][contains(text(), '123')]" );
Einen anderen Weg, dies zu tun wäre mit getTable( "xpath=//table[@class='foo'].x.y")
für jeden und jede Zeile x, Spalte y ein. Umständlich, aber es funktioniert... meistens. Es NICHT zurück <input>
tag! Es wird eine leere Zeichenfolge zurückgeben, die für die Zelle 🙁
Irgendwelche Ideen?
InformationsquelleAutor foob.ar | 2010-10-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese
XPath
Ausdruck:/html/body/table[descendant::td[contains(.,'Car')]]
Hinweis: Wenn Sie wissen, dass Ihr schema, nicht mit einem Start
//
Betreiber. Die Verwendung von string-Wert statt text-Knoten (auf diese Weise erhalten Sie die Verkettung aller untergeordneten text-nodes).Das ist, warum mein sentece beginnt mit
If you know your schema
... Dein problem ist für ussingtext()
und deine Frage istAny ideas ?
. Sie ändern könnte, dies, wenn Sie wissen, wie zu machen Verallgemeinerungen. Wollen Sie dietd
Behälter differents oder kann es sein das der gleiche?InformationsquelleAutor
Mehrere Pfade können kombiniert werden mit | separator.
Zwicken:
InformationsquelleAutor knb
möchten Sie vielleicht die Verwendung
//td[enthält,'Auto'] and td[enthält,'123']/ancestor::tr
wird, wählen Sie die tr enthält td die Spiele der beiden Argumente enthält
Versuchen, Anzeigen Xpath-Plugin in firefox, sehr nützliche plugin.
Erfahren Sie mehr über die Achsen in Xpath: http://www.w3schools.com/xpath/xpath_axes.asp
Dies hat syntax-Fehler...
Die syntax ist nicht getestet, sorry für die Fehler. Ich bezweifle, dass eine Unterbrechung xpath als xapth wählen Sie ein element 1 - der Inhalt von td-a und b nichts zu tun mit der Lage des Tisches, und was Folgen, oder gehen Sie vor. Hoffe ich bekomme dieses Recht..
InformationsquelleAutor Javabeginner
Dank knb für einige syntax-Hinweise.
Das ist zwar etwas off-topic, aber relevant für die Suche, die hat mich hierher geführt...
Hatte ich eine Tabelle mit [ name | value] - Zellen. Ich brauchte, um den Wert aus der Zeile mit 'name' vor.
(fake Beispiel, aber jeder link, den ich suchte, hatte den gleichen text und keine IDs - der Punkt ist, dass die Kontext-Informationen wurde in einer benachbarten Zelle)
Konnte ich wieder den button, den ich wollte, wie dieses, verschachtelte [[]] Bedingungen:
//table[@id='options']/tbody/tr[td[contains(text(), 'this label')]]/td[2]/a
"Holen Sie sich das "a" in einer Zeile mit einer anderen Zelle mit dem text ich bin auf der Suche nach"
Ich denke, dass diese Art von Aufgabe könnte sein, einen gemeinsamen Fall, so bin ich Entsendung es hier zur info
InformationsquelleAutor dman
In mein problem, ich hatte eine Liste mit Produkten, wo es war, identifiziert durch eine eindeutige SKU/Katalog Kombination. Wenn ich wollte noch hinzufügen, das Produkt zu einem Wagen, wählte ich es von SKU und Katalog.
Verwendung von foob.ar Beispiel:
Kombinieren Sie es mit dman die Lösung für die Wahl eines bestimmten element/Spalte in dieser Zeile
Edit:
Die Lösung oben funktioniert, wenn ich war nur auf der Suche für diese zwei Werte in die Spalten. Wenn Sie möchten, zu finden, ein Wert relativ zu einer bestimmten Spalte, die ich hatte, um es zu ändern ein bisschen
InformationsquelleAutor NkM