Java ElementNotVisibleException
我正在使用Java 7、Firefox和Selenium 2.30 0,并出现以下错误:Java ElementNotVisibleException,java,selenium,Java,Selenium,我正在使用Java 7、Firefox和Selenium 2.30 0,并出现以下错误: ElementNotVisibleException:元素当前不可见,因此可能无法与之交互 这就是我正在做的: driver.findElement(By.xpath("//*[@id='Menu1']/li[3]/a")).click(); driver.findElement(By.xpath("//*[@id='Menu1']/li[3]/ul/li[5]/a")).click(); 我用Intel
ElementNotVisibleException:元素当前不可见,因此可能无法与之交互
这就是我正在做的:
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项要选择/单击。现在,当我进入第二步时,我得到一个错误。为了使驱动程序能够看到WebElement,我需要做些什么吗 从下拉列表中选择元素时有时会出现问题。有多种解决方案,请检查是否有适合您的解决方案: 1-使用
点击
2-使用fireevent(焦点)
然后单击。有时,背景中的某个元素被加载,当它被加载时,焦点移动到那里,因此elementNotVisible错误
3-使用mouseDownRight
看看他们。如果您有更多的观察结果,请更新问题。在以下两种情况中的一种情况下会引发过时元素引用异常,第一种情况比第二种情况更常见:
该元素已被完全删除。
元素不再附加到DOM
最常见的原因是元素所在的页面已刷新,或者用户已导航到其他页面。一个不太常见但仍然常见的原因是JS库删除了一个元素,并将其替换为具有相同ID或属性的元素。在这种情况下,尽管替换元件看起来相同,但它们是不同的;驱动程序无法确定更换件是否符合预期
如果元素被替换为相同的元素,一个有用的策略是再次查找该元素。如果您自动执行此操作,请注意,您很可能正在打开您的测试以了解竞争条件和潜在的片状。例如,给定代码
WebElement element = driver.findElement(By.id("example"));
String text = element.getText();
当您尝试选择li[4]/a或li[3]/a时会发生什么情况?你仔细检查了xpath吗?非常感谢你的输入。我做了更多的搜索,这是我应该做的事情,并发现了这一点:这似乎让我到了我想去的地方!请注意,答案应该是搜索解决方案的终点(而不是参考文献的另一个中途停留,随着时间的推移,这些参考文献往往会过时)。请考虑在这里添加一个独立的概要,将链接作为参考。