我正在尝试找到一个选择带有EXACT标签的复选框的XPath。但是,我无法使用contains()
,因为我尝试找到的标签可能有多个选项。
这是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>
我正在尝试找到标签为&#39; Pharmacist&#39;的复选框。这个xpath通常可以正常工作
//label[contains(., 'Pharmacist')]/input[1]
除了“药剂师与药剂师”之外。 BEFORE药剂师名单,因为它包含“药剂师”这个词。它被选中了。我无法使用ID,因为我的测试用于多个环境并且ID会发生变化。同样重要的是要注意这些显示的顺序也可能因环境而异。
我的情况与链接的示例略有不同,因为我的输入元素位于标签元素内。
答案 0 :(得分:0)
这个XPath,
is Identifier
a Identifier
multi Identifier
- Subtraction Operator
line Identifier
comment Identifier
. Error
WHILE Keyword
( Open Parenthesis
x Identifier
< Less Than Operator
10 Literal
) Close Parenthesis
PRINT Keyword
x Identifier
; Semi-colon
x Identifier
:= Assignment Operator
x Identifier
+ Addition Operator
2 Literal
; Semi-colon
ENDWHILE Keyword
将选择//label[normalize-space()='Pharmacist']/input
元素中包含的input
元素,其中字符串规范化字符串值为label
。
另见:
答案 1 :(得分:0)
我将您的HTML代码复制到了测试html页面中,并尝试按标签获取复选框。
"//label[text()[contains(.,'Out')]]//input[@type='checkbox']"
此复选框用于第三个复选框。 通知为XPATH表达式提供唯一的子文本,因为XPATH将返回与表达式匹配的第一个元素。即dun提供“药剂师”,当然,所有复选框元素都具有此文本。