我使用的是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对驱动程序可见,我需要做些什么吗?
答案 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();