ElementNotVisibleException

时间:2013-03-08 20:55:26

标签: java selenium

我使用的是Java 7,Firefox,Selenium 2.30 0,我收到以下错误:

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在调试模式下运行这个,所以我不认为这是一个时间问题因为我很慢。第一个查找元素效果很好,我可以看到菜单下拉,其中包含5个项目select / click。现在,当我进入第二步时,我得到一个错误。为了使WebElement对驱动程序可见,我需要做些什么吗?

2 个答案:

答案 0 :(得分:0)

从下拉列表中选择元素时有一些问题。有各种解决方案,检查是否有适合您的事情:

1-使用clickAt

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

3-使用mouseDownRight

检查出来。如果您有更多观察结果,请更新问题。

答案 1 :(得分:0)

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

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

如果元素已被替换为相同元素,则有用的策略是再次查找元素。如果您自动执行此操作,请注意您可能会在竞争条件和潜在的瑕疵情况下打开测试。例如,给定代码

WebElement element = driver.findElement(By.id("example"));
String text = element.getText();