没有ID的复选框的Xpath

时间:2016-10-11 11:57:44

标签: selenium xpath

如果不使用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>

4 个答案:

答案 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']