2017-10-22 2 views
2

Ich versuche, den XPath zu finden, der ein Kontrollkästchen mit einem EXACT-Label auswählen würde. Allerdings kann ich nicht verwenden, da es mehrere Optionen für die Beschriftung gibt, die ich finden möchte. HierAuswahl durch XPath-Element mit EXAKTem Text in Label

ist die html:

<li> 
    <label class="checkbox"> 
     <input id="role_id_9" name="user[role_ids][]" type="checkbox" value="9"/> Pharmacist with Prescriptive Authority 
    </label> 
    </li> 
    <li> 
    <label class="checkbox"> 
     <input id="role_id_10" name="user[role_ids][]" type="checkbox" value="10"/> Pharmacist 
    </label> 
    </li> 
    <li> 
    <label class="checkbox"> 
     <input id="role_id_83" name="user[role_ids][]" type="checkbox" value="83"/> Out of State Pharmacist 
    </label> 
    </li> 

Ich versuche, das Kontrollkästchen mit der Bezeichnung ‚Apotheker‘ zu finden. Diese XPath funktionieren würde normalerweise

 //label[contains(., 'Pharmacist')]/input[1]

, außer dass ‚Apotheker mit Prescriptive Behörde‘ VOR Apotheker aufgelistet, so, weil es das Wort ‚Apotheker‘ enthält es stattdessen ausgewählt. Ich kann keine IDs verwenden, da meine Tests in mehreren Umgebungen verwendet werden und sich die IDs ändern. Es ist auch wichtig zu beachten, dass die Reihenfolge, in der diese Anzeige angezeigt wird, auch je nach Umgebung variieren kann.

Meine Situation war nur ein wenig anders als das verknüpfte Beispiel, da sich mein Eingabeelement innerhalb des Label-Elements befand.

+0

Mögliche Duplikat von [Wie XPath verwenden enthält() für einen bestimmten Text?] (Https://stackoverflow.com/ Fragen/39650007/how-to-use-xpath-enthält-für-spezifischen-text) – kjhughes

Antwort

0

Diese XPath,

//label[normalize-space()='Pharmacist']/input 

werden diese input Elemente auszuwählen, die in einem label Element, dessen strang normalisierten Zeichenfolgenwert ist enthalten sind.

Siehe auch:

+0

Vielen Dank! Das hat funktioniert. Ich habe versucht, dir +1 zu geben, aber mein Ruf ist zu niedrig. Hoffentlich wird jemand anderes mitkommen und das hier ausdrücken. Vielen Dank!! – QADeveloper

+0

Gern geschehen. Bitte [** accept **] (http://meta.stackoverflow.com/q/5234/234215) diese Antwort, wenn es geholfen hat. (Das dauert keine Wiederholung.) Danke. – kjhughes