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

Vip*_*Sha 3 selenium-webdriver

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

driver.findElement(By.id("MoveAllRight")).click();
Run Code Online (Sandbox Code Playgroud)

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

有人可以帮我这个吗?

Ard*_*sco 12

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

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

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

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


Gre*_* A. 3

它始终单击第一个,因为 findElement 将返回找到的第一个符合您条件的元素。您可以使用 findElements 返回所有匹配元素的列表,然后访问找到的第二个元素。您还可以使用 xpath,例如 //img[@id='MoveAllRight'][2]。

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