在selenium web驱动程序中使用eclipse如何在href链接中使用html代码中存在相同文本的两个href时

时间:2017-06-22 17:59:47

标签: eclipse selenium selenium-webdriver

我使用的是selenium web驱动程序和此工具的新功能。我的html页面包含两个" href"其中写有相同文本的标签,因此我无法使用eclipse中的findElement定位元素,也无法使用xpath方法单击href链接。下面是html的一部分



<li id="SubmodLI_113"> <a href="#" onclick="funSubModuleClick('../../Onboard/loadOnboardInboxMo‌​dule.do','111','113'‌​,'Inbox','-1','113')‌​">Inbox</a> </li>
<a href="#" onclick="funSubModuleClick('../../Onboard/loadOnboardInboxMo‌​dule.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;
&#13;
&#13;

2 个答案:

答案 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]"));