如何使用ExpectedConditions.visibilityOfElementLocated进行多次点击

时间:2013-01-25 10:07:10

标签: selenium

我有一个包含多个上下文菜单的HTML网站。 xpath是:.// * [@ id ='TopIcon_Edit'] / a / span。 (这条路径会遇到几个元素) 在我的测试中,其中一个上下文菜单是可见的。

我现在想验证一个上下文菜单是否可见,使用 ExpectedConditions.visibilityOfElementLocated(By.xpath( “.//*[@ ID = 'TopIcon_Edit'] /一个/跨度”))。 虽然我可以看到上下文菜单可见,但测试告诉我: “元素不符合By.xpath定位的元素的条件可见性:......”

我假设方法visibilityOfElementLocated(...)只评估定位器找到的第一个元素的可见性,这是​​不可见的,因为Selenium是正确的。

我很感激有关如何解决这个问题的任何提示。

亲切的问候, 格哈德舒斯特

2 个答案:

答案 0 :(得分:0)

是的,当您使用Selenium搜索单个元素并且result返回多个元素时,该方法将获取第一个元素并返回它。 因此,您必须更精确地指定您使用的xpath,例如:“.//* [@ id ='TopIcon_Edit'] / a [1] / span”或类似的,它们仅指向所需的元素。

答案 1 :(得分:0)

如果你可以取消有用的xpath。 FindElement(By.cssSelector(" #TopIcon_Edit span"))。click()或做一个web元素列表我们= FindElements(By.cssSelector(" #TopIcon_Edit span"));然后根据样式过滤您的列表。它更容易使用cssSelectors提供更大的灵活性。