Wie nur Teil einer ID erfassen?
-
03-07-2019 - |
Frage
Ich versuche, die ID eines Elements zu erfassen, die zufällig generiert werden. Ich kann erfolgreich den Wert meiner Element-ID wie folgt erfassen ...
| storeAttribute | //div[1]@id | variableName |
Nun meine Variable wird so etwas wie ...
divElement-12345
Ich möchte entfernen ‚divElement-‘, so dass die Variable, mit denen ich links ist ‚12345‘, so dass ich es später verwenden können, die ‚Form-12345‘ Element mit ihm ... so etwas wie dies im Zusammenhang wählen:
| type | //tr[@id='form-${variableName}']/td/form/fieldset/p[1]/input | Type this |
Wie kann ich in der Lage sein, dies zu tun?
Lösung
Sie haben zwei Möglichkeiten in Selenium, XPath und CSS-Selektor. Ich habe gelesen, dass CSS-Selektor ist besser für Tests in Firefox und IE zu tun. Mit der neuesten Version von Selenium IDE (2009.03.05) Ich habe Erfolg gehabt mit storeEval verwendet, der Javascript Ausdrücke auswertet, geben Sie JavaScript-String-Funktionen zugreifen zu können.
XPath:
storeAttribute | //div[1]@id | divID
storeEval | '${divID}'.replace("divElement-", "") | number
type | //tr[@id='form-${number}']/td/form/fieldset/p[1]/input | Type this
CSS-Selektor:
storeAttribute | css=div[1]@id | divID
storeEval | '${divID}'.replace("divElement-", "") | number
type | css=tr[id='form-${number}'] > td > form > fieldset > p[1] > input | Type this
Andere Tipps
Es gibt viele Funktionen in XPath, die Ihr Problem lösen sollen. Unter der Annahme, „divElement-“ ist eine Konstante, die sich nicht ändern und dass Sie verwenden XPath 2.0, würde ich vorschlagen:
substring-after (div [1] / @ id / text () "DivElement -")