如何为以下复选框创建xpath

时间:2015-04-23 14:37:03

标签: selenium xpath checkbox

我发现很难为复选框创建相对xpath。我已附上下面的代码段。 Firebug给了我一个绝对的xpath:

html/body/div[6]/div[2]/form/table[1]/tbody/tr[3]/td[1]/input[1]

但是如果有单独的条目,然后绝对xpath更改为:

,则表单会更改

html/body/div[6]/div[2]/form/table[1]/tbody/tr[4]/td[1]/input[1]

(或tr [5]或任何数字)。我试图使用相对xpath,但是firebug显示红色的xpath(因此它无效) -

.//*[@id='responderSelection'155939'1']

请帮忙。

<form id="pollGroupForm" method="post" action="/consoleapp/newSurvey.jspx">
<div class="filter"/>
<table class="dataTable">
<tbody>
<tr>
<tr class="alternateRow">
<tr>
<td>
<input id="responderSelection'155939'1" type="checkbox" value="true" name="responderSelection['155939']"/>
<input type="hidden" value="on" name="_responderSelection['155939']"/>
</td>
<td>twoway_2</td>
<td>                                              26161                                                           </td>
<td>
</tr>
</tbody>
</table>
<table>
</form>
</div>
</div>
<div id="footer">

3 个答案:

答案 0 :(得分:0)

你会尝试使用cssSelector进行部分搜索吗?我假设带有id的数字是动态的,所以下面的cssSelector让你找到带有id的部分匹配的复选框(^表示开头)

[id^='responderSelection']

如果你真的想要xpath那么contains()与上面的css等价

//input[contains(@id,'responderSelection')]

答案 1 :(得分:0)

根据具体情况,有几种不同的方法可以做到这一点。

如果该表中只有复选框,那么您可以专注于://table//input[@type='checkbox']

可能更安全选择器是在表单中查找复选框,因为它具有固定的id属性://form[@id='pollGroupForm']//input[@type='checkbox']。如果可以,请始终从固定ID开始。

答案 2 :(得分:0)

如果你想获得ID动态变化的元素的Xpath,有一个小技巧:只需用Firebug检查元素,双击它就删除它的ID(删除整个id参数,或者更改值为""),您将获得正确的Xpath。

例如,如果您有以下结构:

<div id="fix-id">
  <div id="dynamic-id-1214151"></div>
</div>

您将获得//*[@id="fix-id"]/div[1]而不是//*[@id="dynamic-id-1214151"]