Selenium RC链接定位器在表中找不到链接

时间:2012-02-22 08:24:40

标签: testing selenium

我有一个页面如下:

<table>
<tr>
    <th>Company Name</th>
</tr>
<tr>
    <td><a href="www.whatever.com"> What Ever Company</a></td>
</tr>
</table>

公司名称在表格中任意放置,因此我只能使用链接的文本来查找链接:

selenium.click("link='What Ever Company'");

然而,它说:ERROR:Element link='What Ever Company' not found.

这是什么问题?有没有其他方法可以点击链接?

非常感谢。

修改 似乎问题是我有几个相同文本的链接(我的坏)。在使链接的文本唯一之后,我使用selenium.click("//a[contains(text(),'Test Campaign 1756237989')]")并且它可以正常工作。

2 个答案:

答案 0 :(得分:1)

这可能是因为您忘记了链接开头的空格吗?

selenium.click("link=' What Ever Company'");
                      ^

单击链接的另一种可能方法是使用XPath表达式:

selenium.click("//a[contains(.,'What Ever Company')]");

这将匹配所有链接中的“What Ever Company”。

如果您想要更精确:

selenium.click("//a[.=' What Ever Company']");

这只会在锚点等于'What Ever Company'时才匹配。

另一种选择是使搜索更具体(即告诉定位器此链接始终在<td>里面,<a>内部):

selenium.click("//td[a]/a[contains(.,'What Ever Company')]");

//td[a]查找里面有<td>的所有<a>元素。 (与//td/a不同之处在于,如果您使用//td[a][2]查找元素,则会获得<a>内的第二个<td>,而另一方面//td/a[2]得到第一个<a>的第二个<td>。)

编辑:我认为使用.作为对XPath表达式中text()的引用应该有效,但如果没有,请尝试使用text()

答案 1 :(得分:0)

尝试使用这些XPath:

"//table/tr[2]/td/a"

"//a[contains(text(), 'What Ever Company')]"

应该工作。