如何制定一个xpath表达式来检查是否选中了复选框?

时间:2015-09-02 19:53:38

标签: html xpath removing-whitespace

我是xpath的新手,并尝试制定一个xpath表达式,用于检查是否选中了复选框。

这是我的HTML,

<label><input type='checkbox' name='name[]' class="some-class-name" /> Text 1</label>
<label><input type='checkbox' name='name[]' class="some-class-name" checked /> Text 2</label>

我有这个xpath表达式,但我没有得到任何结果,

//*[contains(text()[normalize-space()], " Text 1 ")] //input[@type="checked" and not(@checked)]

如何使用xpath检查“Text 1”复选框?

1 个答案:

答案 0 :(得分:1)

以下XPath表达式应该选择您想要的内容:

//*[@type="checkbox" and not(@checked)][contains(normalize-space(following-sibling::text()[position()="1"]), "Text 1")]

返回此元素:

<input type="checkbox" id="id" name="name[]" />

注意:

  • following-sibling::text()[position()='1']部分是这里最重要的部分;它意味着, 第一个跟随兄弟文本节点
  • 使用表单contains(normalize-space(…), "Text 1")检查文本节点的值。请特别注意"Text 1" - 您不想使用原始版本中的contains(normalize-space(…), " Text 1 ")表单,因为" Text 1 "中的空格会导致表单失败。当您使用normalize-space(…)时,您要求从文本节点中删除那些前导+尾随空格。因此,您需要检查匹配文本节点在删除这些空格时的样子,即"Text 1"