Wie kann ich mit Selenium eine bestimtes Webelement von einer Lösung von Webelementen ansprechen?
Ich habe auf einer Website eine Checkboxes die ein Attribut genau gleich haben. Wenn ich einen xpath ertselle bekomme ich mehrere Lösungen! Wie könnte ich den xpath erweitern damit ich genau eine Lösung bekomme?
Hier ist mein xpath:
//input[@type='checkbox']
Ich bekomme 5 Webelemente für die dieser Ausdruck passt. Wie könnte ich ihn erweitern damit ich ein bestimmtes Webelement bekomme?
Hat jemand eine Idee?
2 Antworten
Hallo,
gibt es denn kapselnde Element die sich unterscheiden? Hast du Zugriff auf den Code der Seite? Du könntest IDs an jedem Element vergeben. Falls es eine feste Reihenfolge der Elemente gibt, kannst mittels Reihenfolge darauf zugreifen. Vielleicht kannst du mehr Html posten, dann kann man besser sehen, um was es geht.
Das Problem ist die IDs sind dynamisch. Und ich möchte deswegen versuchen die Webelemente unabhängig von den IDs anzusprechen.
Hier mal ein bisschen Code:
<div class="form-group "><input id="mmcr:accountEdit:j_id_21_2_2_3_1_1_2_8_2_1_4_3_2_6_0_2:input" type="checkbox" name="mmcr:accountEdit:j_id_21_2_2_3_1_1_2_8_2_1_4_3_2_6_0_2:input" value="true" class="checkbox" /><label class="label-position " for="mmcr:accountEdit:j_id_21_2_2_3_1_1_2_8_2_1_4_3_2_6_0_2:input">Per E-Mail</label> </div> <div class="form-group "><input id="mmcr:accountEdit:j_id_21_2_2_3_1_1_2_8_2_1_4_3_2_6_1_2:input" type="checkbox" name="mmcr:accountEdit:j_id_21_2_2_3_1_1_2_8_2_1_4_3_2_6_1_2:input" value="true" class="checkbox" /><label class="label-position " for="mmcr:accountEdit:j_id_21_2_2_3_1_1_2_8_2_1_4_3_2_6_1_2:input">Schriftlich</label> </div> <div class="form-group "><input id="mmcr:accountEdit:j_id_21_2_2_3_1_1_2_8_2_1_4_3_2_6_2_2:input" type="checkbox" name="mmcr:accountEdit:j_id_21_2_2_3_1_1_2_8_2_1_4_3_2_6_2_2:input" value="true" class="checkbox" /><label class="label-position " for="mmcr:accountEdit:j_id_21_2_2_3_1_1_2_8_2_1_4_3_2_6_2_2:input">Telefonisch</label> </div>
Da kriege ich leider erneut mehrere Webelemente angeboten
Mittels Reihenfolge: z. B. //input[@type='checkbox'][1], ist aber eher schlecht
Ja klar, man könnte die input Elemente über das Label ansteuern, z. B. in etwa so
.//input[@type='checkbox' and ./parent::label[contains(string, "Telefonisch")]]] Die Syntax stimmt hier wahrscheinlich nicht 100%, aber vom Prinzip her funktioniert es so.
Bearbeitet: Ups, sollte eigentlich als Kommentar zum vorigen Post angezeigt werden, bin wohl im falschen Eingabefeld gelandet.
Danke das hat mir sehr geholfen. Ich arbeite mich gerade erst in die Testautomatisierung ein und kenne mich mit den ganzen Möglichkeiten bei der Ansteuerung nicht wirklich gut aus. Vielen Dank