0

我正在使用带有 Selenium 2.30 0 的 Java 7、Firefox 并收到以下错误:

ElementNotVisibleException: Element is not currently visible and so may not be interacted with

现在这就是我正在做的事情:

driver.findElement(By.xpath("//*[@id='Menu1']/li[3]/a")).click();
driver.findElement(By.xpath("//*[@id='Menu1']/li[3]/ul/li[5]/a")).click();

我正在使用 IntellIJ 在调试模式下运行它,所以我认为这不是时间问题,因为我的速度很慢。第一个 find 元素效果很好,我可以看到带有 5 个项目的菜单下拉到select / click. 现在,当我进入第二步时,我得到了一个错误。为了使 WebElement 对驱动程序可见,我需要做些什么吗?

4

2 回答 2

0

在以下两种情况中的一种情况下会引发过时的元素引用异常,第一种比第二种更常见:元素已被完全删除。该元素不再附加到 DOM。

最常见的原因是元素所在的页面已刷新,或者用户已导航到另一个页面。一个不太常见但仍然常见的原因是 JS 库删除了一个元素并将其替换为具有相同 ID 或属性的元素。在这种情况下,尽管替换元素可能看起来相同,但它们是不同的;驱动程序无法确定替换实际上是预期的。

如果元素已被相同的元素替换,一个有用的策略是再次查找该元素。如果您自动执行此操作,请注意您很可能会将测试打开到竞争条件和潜在的脆弱性。例如,给定代码

WebElement element = driver.findElement(By.id("example"));
String text = element.getText();
于 2013-12-30T17:57:53.430 回答
0

从下拉列表中选择元素时有时会出现问题。有多种解决方案,请检查是否适合您:

1-使用clickAt

2- 使用fireevent(focus)然后单击。有时它会发生背景中的某些元素正在加载,当它被加载时,焦点移动到那里,因此 elementNotVisible 错误。

3-使用mouseDownRight

去看一下。如果您有更多观察结果,请更新问题。

于 2013-03-09T13:19:33.950 回答