识别selenium中的链接(未提供id或类)

时间:2014-07-08 17:27:35

标签: java selenium webdriver

我想知道如何通过webdriver识别以下html“节点”:

<a href="http://www.google.pl/url?sa=t&amp;rct=j&amp;q=&amp;esrc=s&amp;source=web&amp;cd=2&amp;cad=rja&amp;uact=8&amp;ved=0CDAQFjAB&amp;url=http%3A%2F%2Fpl.glosbe.com%2Fen%2Fpl%2Fthank%2520you%2520very%2520much%2520indeed&amp;ei=OSO8U7GADqeV7AacroDYCQ&amp;usg=AFQjCNG4ELDFcZgL9gKbm2UV96aHCnjvRg" onmousedown="return rwt(this,'','','','2','AFQjCNG4ELDFcZgL9gKbm2UV96aHCnjvRg','','0CDAQFjAB','','',event)">thank you <em>very much indeed</em> - Angielsko-Polski Słownik <b>...</b></a>

(这只是Google推出谷歌搜索时的任何链接)

我用谷歌搜索了它,但是我发现只提供了id或类的情况。 在这种情况下怎么样?

这是我失败的尝试:

webdriver.findElement(By.xpath("//a[@href='http://www.google.pl/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0CCcQFjAA&url=http%3A%2F%2Fpl.bab.la%2Fslownik%2Fangielski-polski%2Fthank-you-very-much-indeed&ei=Sia8U6LPCevB7AagwoCICg&usg=AFQjCNF6y7swYrp3axD0hNrCWfjovhcVPw&bvm=bv.70138588,d.bGE']")).click();

提前致谢。

2 个答案:

答案 0 :(得分:2)

有几种可能性:

By.tagName("a")

但是,可能会有多个a标记,因此上面会选择遇到的第一个标记。为了更具体,您可以使用:

By.xpath("//a[0]")
在这种情况下,

0明确指向第一个a标记。但是,为了给出精确的XPath答案,我需要查看更多页面代码以及您的确切要求。您也可以使用:

By.partialLinkText("thank you very much indeed")

如果你有独特的封闭文字,这种方法效果最好。

您可能还想阅读the API中的其他定位器。

答案 1 :(得分:0)

如果您无法直接识别链接,可以尝试基于其他元素。

当您有任何相邻的div或元素具有唯一值时,您可以参考相对于该链接的链接。

WebElemenet element = driver.findElement(By.cssSelector("div#id a"));

这将获得div中存在的链接元素,其id值为&#34; id&#34;。