Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.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 Webdriver是否需要视图中的DOM元素来执行操作?_Java_Selenium_Selenium Webdriver_Webdriver - Fatal编程技术网

Java Webdriver是否需要视图中的DOM元素来执行操作?

Java Webdriver是否需要视图中的DOM元素来执行操作?,java,selenium,selenium-webdriver,webdriver,Java,Selenium,Selenium Webdriver,Webdriver,我正在使用Webdriver驱动浏览器来测试我们的网站。 但是,我遇到了Webdriver无法在页面元素上执行操作的问题,除非我使用driver.findElementBy.idmyElementId.sendKeysKeys.ARROW_down 我的问题是,对于要执行的任何操作(如单击),是否必须始终在页面上显示WebElement?加载页面后DOM中存在元素难道还不够吗?Selenium WebDriver旨在模拟真实用户的行为,并与应用程序的HTML交互。要与元素交互,元素必须可见。根据

我正在使用Webdriver驱动浏览器来测试我们的网站。 但是,我遇到了Webdriver无法在页面元素上执行操作的问题,除非我使用driver.findElementBy.idmyElementId.sendKeysKeys.ARROW_down


我的问题是,对于要执行的任何操作(如单击),是否必须始终在页面上显示WebElement?加载页面后DOM中存在元素难道还不够吗?

Selenium WebDriver旨在模拟真实用户的行为,并与应用程序的HTML交互。要与元素交互,元素必须可见。根据WebDriver W3C规范,元素的可见性由人眼可以感知到的东西来引导。 所以答案是肯定的


但是,为了避免向下滚动页面,您可以尝试使用JavascriptExecutor。即使元素不在视图中,它也应该可以工作。

Selenium WebDriver旨在模拟真实用户的行为,并与应用程序的HTML交互。要与元素交互,元素必须可见。根据WebDriver W3C规范,元素的可见性由人眼可以感知到的东西来引导。 所以答案是肯定的

但是,为了避免向下滚动页面,您可以尝试使用JavascriptExecutor。即使元素不在视图中,它也应该可以工作。

从for Click

单击元素有一些先决条件。元素必须可见,并且其高度和宽度必须大于0

Selenium WebDriver模拟用户与网页的交互,因此如果元素未显示,它就不能单击该元素,尽管DOM中的存在足以定位元素并提取文本等数据。单击不可见元素可能会导致以下错误:

ElementNotVisibleException

元素在点411675处不可单击。其他元素将收到单击

或意外行为,因为另一个元素没有收到任何错误的单击

这就是为什么硒提供了许多解决方案来克服这个问题。例如:

在测试开始时最大化窗口 滚动到要使用中的moveToElement方法进行交互的元素 显式等待,元素的可见性相同 从中单击

单击元素有一些先决条件。元素必须可见,并且其高度和宽度必须大于0

Selenium WebDriver模拟用户与网页的交互,因此如果元素未显示,它就不能单击该元素,尽管DOM中的存在足以定位元素并提取文本等数据。单击不可见元素可能会导致以下错误:

ElementNotVisibleException

元素在点411675处不可单击。其他元素将收到单击

或意外行为,因为另一个元素没有收到任何错误的单击

这就是为什么硒提供了许多解决方案来克服这个问题。例如:

在测试开始时最大化窗口 滚动到要使用中的moveToElement方法进行交互的元素 显式等待,元素的可见性相同
为了消除关于“可见性”的一些混淆,一般来说,一个元素根本不需要“滚动到视图中”,即在人类可以看到的打开窗口或框架的范围内。除非所讨论的元素具有自定义侦听器,或者使用页面可见性API see来控制它们对人眼的可见性

毕竟,你的页面可以通过“屏幕外”、内存、无头浏览器、PhantomJS、Slimer等方式呈现。你仍然希望并期望你的测试能够以这种方式工作,例如,这样你就可以连续运行它们,过夜等等


但是,正如其他人正确地说的那样,如果所讨论的元素没有大小,或者被明确标记为不可见,或者确实被另一个元素覆盖,则许多操作将失败,并出现ElementNotVisibleException。

为了澄清关于“可见性”的一些混淆,一般来说,一个元素根本不需要“滚动到视图中”,也就是说,在一个人可以看到的打开的窗口或框架的范围内。除非所讨论的元素具有自定义侦听器,或者使用页面可见性API see来控制它们对人眼的可见性

毕竟,你的页面可以通过“屏幕外”、内存、无头浏览器、PhantomJS、Slimer等方式呈现。你仍然希望并期望你的测试能够以这种方式工作,例如,这样你就可以连续运行它们,过夜等等

但正如其他人正确地说的那样,如果元素在 该元素没有大小,或者被明确标记为不可见,或者确实被另一个元素覆盖