如果不使用ID,我可以使用哪种xpath?或者,如果有更多复选框,但刷新页面后ID仍然不同?
<td class="player" style="vertical-align: top;">
<span class="gb-CheckBox">
<input id="gb-uid-120" type="checkbox" value="on" tabindex="0" style="background-color: rgb(255, 255, 255);">
<label for="gb-uid-120"></label>
</span>
</td>
答案 0 :(得分:1)
请尝试以下操作:
//span[@class="gb-CheckBox"]/input[@type="checkbox"]
答案 1 :(得分:1)
为什么不:
//input[@type='checkbox']
这应该足够了,并将选择所有复选框类型的输入 如果只需要来自某个区域,则需要通过在此前面添加另一个选择器来添加约束,如:
//div[@class='my_prefered_area']//input[@type='checkbox']
获取选择器的另一种方法是使用不会改变的id的pare:
//input[contains(@id, 'gb-uid')]
当然,您也可以为复选框类型添加限制:
//input[contains(@id, 'gb-uid')][@type='checkbox']
答案 2 :(得分:1)
似乎你得到了答案,因为上面提到的大部分方法都是正确的。
用CSS修正第一条路径:
td.player>span.gb-CheckBox>input[type='checkbox']
(尝试删除&gt;之前和之后的空格)
或
td.player>span.gb-CheckBox>input
正如您所提到的,如果您的ID经常变化,那意味着它是一个动态的元素和 如果它在最后变化(在gb-uid之后 - 即gb-uid-120,然后是gb-uid-121之类的东西)然后在Xpath上使用contains函数,如下所示:
//span[@class="gb-CheckBox"]/input[contains(@id, 'gb-uid-')]
答案 3 :(得分:0)
您也可以使用cssSelector
代替xpath
轻松找到此复选框,如下所示:
td.player > span.gb-CheckBox > input[type='checkbox']