我使用的是selenium web驱动程序和此工具的新功能。我的html页面包含两个" href"其中写有相同文本的标签,因此我无法使用eclipse中的findElement定位元素,也无法使用xpath方法单击href链接。下面是html的一部分
<li id="SubmodLI_113"> <a href="#" onclick="funSubModuleClick('../../Onboard/loadOnboardInboxModule.do','111','113','Inbox','-1','113')">Inbox</a> </li>
<a href="#" onclick="funSubModuleClick('../../Onboard/loadOnboardInboxModule.do','111','113','Inbox','-1','113')">Inbox</a>
<ul class="pad15TLR">
<li><i class="inboxic"></i></li>
<li> <b>Inbox</b></li>
<li><a href="#" onclick="fetchJob(1);">Inbox <span class="red"></span></a></li>
<li></li>
</ul>
<a href="#" onclick="fetchJob(1);">Inbox <span class="red"></span></a>
&#13;
答案 0 :(得分:0)
如果您提供正在查看的代码,将会很有帮助。使用findElement()时, Selenium允许您选择DOM的任何部分,这意味着文本可以完全相同,您仍然可以选择所需的超链接。
根据您的问题,我将不得不假设超链接不是用ID唯一标识的,并且也在相同的父元素下。
这里的关键是超链接的XPath 。并且找到如何编写适当的XPath对于不熟悉它的人来说可能有点混乱。
我在使用selenium时使用 Firefox和Firebug扩展,因为它为网页上看到的任何元素提供了非常好的XPath。
以下是XPath的示例。
.//* [@ id ='osos-navbar-collapse'] / div / nav / ul [2] / li [4] / a
这个XPath说(从右到左阅读)“选择项目索引4上的超链接,在Unorder List index 2下,它是NAV标签的子项,父项下的DIV标签的子项ID为' OSOS-导航栏合拢'
答案 1 :(得分:0)
您可以使用position()来定义您需要点击的元素:
WebElement href1 = driver.findElements(By.xpath("//a[position()=1]"));
WebElement href2 = driver.findElements(By.xpath("//a[position()=2]"));