如何制定一个 xpath 表达式来检查复选框是否被选中?
How to formulate an xpath expression to check if checkbox is checked?
我是 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" 复选框是否被选中?
下面的 XPath 表达式应该select你想要的:
//*[@type="checkbox" and not(@checked)][contains(normalize-space(following-sibling::text()[position()="1"]), "Text 1")]
那个returns这个元素:
<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"
.
我是 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" 复选框是否被选中?
下面的 XPath 表达式应该select你想要的:
//*[@type="checkbox" and not(@checked)][contains(normalize-space(following-sibling::text()[position()="1"]), "Text 1")]
那个returns这个元素:
<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"
.