如何使用Selenium Webdriver区分同一页面上具有相同ID的两个元素?

时间:2013-02-12 17:30:33

标签: selenium-webdriver

我的网页上有两个列表,两个列表都有按钮(图像)来从列表中选择所有项目。两个图像都具有相同的ID,并且没有任何其他信息,如类名,CSS,XPath。我想单击第二个图像以从第二个列表中选择所有项目。但是当Web驱动程序执行以下行时:

driver.findElement(By.id("MoveAllRight")).click();

它总是点击第一张图片,但我希望它点击第二张图片。

有人可以帮我吗?

5 个答案:

答案 0 :(得分:12)

别。相反,提出一个错误。这是无效的HTML。

如果您真的想继续测试无效的内容,并且您还想破坏自动化测试(您真的不想这样做),则可以执行以下操作:

driver.findElement(By.xpath("(//img[@id='MoveAllRight'])[2]")).click();

它会起作用,但这是错误的。

答案 1 :(得分:3)

它总是点击第一个,因为findElement将返回与您的条件匹配的第一个。您可以使用findElements返回匹配的所有元素的列表,然后访问找到的第二个元素。你也可以使用一个xpath,如// img [@ id ='MoveAllRight'] [2]。

您可能想要做的一件事是调查是否可以创建一个xpath,该xpath会考虑应该与之关联的下拉菜单,这样您就可以确保您单击的图像始终是该特定下拉列表的图像。这个难点取决于你的申请。

答案 2 :(得分:2)

list<webelement>  listele = driver.findelements(by.tageName("Img");
syso(listele.size)

listele.get(0).click;
listele.get(1).click;

答案 3 :(得分:1)

我在过去3天尝试了各种选项,最后用这段代码解决了:

list<webelement>  listele = driver.findelements(by.tageName("Img");
syso(listele.size)

listele.get(0).click;
listele.get(1).click;

答案 4 :(得分:0)

大小无法解析,或者在我初始化代码时没有显示字段错误消息。