我想知道如何通过webdriver识别以下html“节点”:
<a href="http://www.google.pl/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&cad=rja&uact=8&ved=0CDAQFjAB&url=http%3A%2F%2Fpl.glosbe.com%2Fen%2Fpl%2Fthank%2520you%2520very%2520much%2520indeed&ei=OSO8U7GADqeV7AacroDYCQ&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();
提前致谢。
答案 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;。