我有一个页面如下:
<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')]")
并且它可以正常工作。
答案 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')]"
应该工作。