2

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

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

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

我将不胜感激有关如何解决此问题的任何提示。

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

4

2 回答 2

0

如果您可以取消 xpath,那将有所帮助。FindElement(By.cssSelector("#TopIcon_Edit span")).click() 或者做一个网页元素列表 we = FindElements (By.cssSelector("#TopIcon_Edit span")); 然后根据样式过滤您的列表。它更容易并为使用 cssSelectors 提供了更大的灵活性。

于 2014-08-18T01:32:53.603 回答
0

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

于 2013-01-25T10:15:14.133 回答