Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ElementNotVisibleException_Java_Selenium - Fatal编程技术网

Java ElementNotVisibleException

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

我正在使用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();

我用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吗?非常感谢你的输入。我做了更多的搜索,这是我应该做的事情,并发现了这一点:这似乎让我到了我想去的地方!请注意,答案应该是搜索解决方案的终点(而不是参考文献的另一个中途停留,随着时间的推移,这些参考文献往往会过时)。请考虑在这里添加一个独立的概要,将链接作为参考。