Java Dev und neu zu Xpath ist. Googelt und RTFM-ed ist ziemlich viel, aber stecken geblieben. Das Unternehmen hat eine große Webapplikation in Java geschrieben, die das Java-Wicket-Framework verwendet. Selen in Kombination mit Gurke und Junit zum Testen verwenden. Daher müssen viele Xpath-Ausdrücke geschrieben werden. Stuck mit dem folgenden.Xpath. Text des Labels kann nicht ausgewählt werden - wenn ein anderes Element wie zwischen den <label> Tags
Ein Bildschirm mit einem Formular und zwei toggles() und Text dahinter. Relevanter Auszug
<label>
<input id="idf1" name="removeConditionViaTreeStep:resultsRadioGroup" value="radio3" checked="checked" type="radio">
Safe to delete
</label>
<label>
<input id="idf2" name="removeConditionViaTreeStep:resultsRadioGroup" value="radio4" type="radio">
Unsafe to delete
</label>
Hinweis: Mit dem Wicket Rahmen bedeutet, dass die Attribute id und Wert sind/können jedes Mal anders sein, die Anwendung so ausgeführt wird, kann sie nicht benutzen. Kann das HTML auch nicht ändern.
Plan A ich einen bestimmten Toggle auswählen wollte (und klicken emulieren/es auswählen) durch den Beschriftungstext als uniq Selektor aber die Tatsache, dass zwischen den Tags gibt es .. gibt mir Probleme. In Clean-Label-Situationen kann ich ein bestimmtes Label ohne Probleme auswählen. Es kann nicht wie // label [contains (text(), 'Unsafe to delete') in diesem Fall funktionieren.
gab auf und ging für Plan B.
Mit firepath Addon für Firebug für die Prüfung und kam mit dem Follow-up: // input [@ name = 'removeConditionViaTreeStep: resultsRadioGroup'] Dies firepath Ergebnisse in zwei Spielen. Ich hoffte, mit etwas wie [2] den zweiten Toggle zu wählen, konnte es aber nicht herausfinden.
Plan C - Rückgriff auf Java und Xpath funktionierte.
Listenelemente = findElementsByXpath ("// input [@ name = 'removeConditionViaTreeStep: resultsRadioGroup']"); elements.get (1) // Wählen Sie den zweiten Schalter.
Haben Sie das Gefühl "// label [contains (text(), 'Unsafe to delete')]" funktioniert nicht, weil alles gestreamt wird und nichts im Speicher durch den Webtreiber von Selen gespeichert ist. Daher bricht das Element den Strom oder so ähnlich ......
Vielleicht kann jemand ein paar Tipps und Hinweise geben oder sogar eine Lösung für Plan A und B.
Bearbeiten der schließenden Klammer Tippfehler korrigiert, wie erwähnt von Bill Hileman.
Versuchen Sie '" // label [normalize-space() = 'Nicht sicher zu löschen'] "' – Andersson
haben Sie versucht, etwas wie 'Elemente.getAtrribute ("textContent"); ' – kushal