如何在selenium webdriver中选择单选按钮?动态选择单选按钮

时间:2013-10-29 14:29:27

标签: java selenium-webdriver

<tbody>
<tr class="odd">
<td>
<input id="nodeAccountOid" type="radio" onclick="setNodeAccountIdToCredentialCheck('E9E2930C4493B569E040A8C0158E4ABD');" style="width:100%;border:0px">
</td>
<td>E9E2930C4493B569E040A8C0158E4ABD</td>
<td>monacho1</td>
<td>urn:dece:org:org:dece:dece:cs</td>
</tr>
<tr class="even">
<td>
<input id="nodeAccountOid" type="radio" onclick="setNodeAccountIdToCredentialCheck('E9E2930C4494B569E040A8C0158E4ABD');" style="width:100%;border:0px">
</td>
<td>E9E2930C4494B569E040A8C0158E4ABD</td>
<td>monacho1</td>
<td>urn:dece:org:org:dece:coord:cs</td>
</tr>
<tr class="odd">
<td>
<input id="nodeAccountOid" type="radio" onclick="setNodeAccountIdToCredentialCheck('E9E2930C4495B569E040A8C0158E4ABD');" style="width:100%;border:0px">
</td>
<td>E9E2930C4495B569E040A8C0158E4ABD</td>
<td>monacho1</td>
<td>urn:dece:org:org:dece:300</td>
</tr>
<tr class="even">
<td>
<input id="nodeAccountOid" type="radio" onclick="setNodeAccountIdToCredentialCheck('E9E2930C4495B569E040A8C0158E4ABD');" style="width:100%;border:0px">
</td>
<td>E9E2930C4495B569E040A8C0158E4ABD</td>
<td>monacho1</td>
<td>urn:dece:org:org:dece:10</td>
</tr>
</tbody>
</table>

我想选择对应于urn:dece:org:org:dece:10的单选按钮,这是提供的html中的第四行。根据AUT中的一些输入,行有时可能会发生变化。请为我提供选择它的方法。

提前致谢

2 个答案:

答案 0 :(得分:1)

由于文本永远不会更改,您可以将其用作DOM中的起点,并使用XPath导航到您需要的input

//td[.='urn:dece:org:org:dece:10']/parent::tr/descendant::input[@id='nodeAccountOid' and @type='radio']
  1. 获取td 等于 text

  2. urn:dece:org:org:dece:10
  3. 获取td的父tr

  4. 从该父级tr获取input 等于 idnodeAccountOid的{​​{1}} } type

  5. 因此,只要XPath定位器可以向上导航到radio并再次向下返回到parent,那么完全元素无关紧要需要。

答案 1 :(得分:0)

您面临的问题是在网页中找到可能出现在不同位置的特定元素。 如果有另一个元素可以通过其内容,id或名称轻松识别,并且此元素与您想要定位的元素之间存在静态关系,则可以使用xpath。据我所知,在selenium文档中也有一些例子。