我是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”复选框?
答案 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"
。