通过标签中的EXACT文本选择XPath元素

时间:2017-10-22 21:00:05

标签: html xml xpath

我正在尝试找到一个选择带有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会发生变化。同样重要的是要注意这些显示的顺序也可能因环境而异。

我的情况与链接的示例略有不同,因为我的输入元素位于标签元素内。

2 个答案:

答案 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提供“药剂师”,当然,所有复选框元素都具有此文本。