不一致的 StaleElementReferenceException 和 NoSuchElementException



我经常运行一个包含大约 250 个测试的测试套件。每次运行此测试套件时,每次都会返回不一致的错误,这些错误似乎是不同的测试。返回的不一致错误示例:

FacebookWebDriverExceptionStaleElementReferenceException: stale element reference: element is not attached to the page document
(Session info: headless chrome=65.0.3325.146)
(Driver info: chromedriver=2.36.540471 (9c759b81a907e70363c6312294d30b6ccccc2752),platform=Linux 4.9.125-linuxkit x86_64)
/var/www/vendor/facebook/webdriver/lib/Exception/WebDriverException.php:108
/var/www/vendor/facebook/webdriver/lib/Remote/HttpCommandExecutor.php:331
/var/www/vendor/facebook/webdriver/lib/Remote/RemoteWebDriver.php:565
/var/www/vendor/facebook/webdriver/lib/Remote/RemoteExecuteMethod.php:40
/var/www/vendor/facebook/webdriver/lib/Remote/RemoteWebElement.php:240
/var/www/vendor/laravel/dusk/src/Browser.php:267
/var/www/vendor/laravel/dusk/src/Concerns/ProvidesBrowser.php:141
/var/www/vendor/laravel/framework/src/Illuminate/Support/Traits/EnumeratesValues.php:176
/var/www/vendor/laravel/dusk/src/Concerns/ProvidesBrowser.php:147
/var/www/vendor/laravel/dusk/src/Concerns/ProvidesBrowser.php:70
/var/www/modules/Venues/Tests/Browser/Venue/VenueTagsTest.php:73
FacebookWebDriverExceptionNoSuchElementException: no such element: Unable to locate element: {"method":"tag name","selector":"body"}
(Session info: headless chrome=65.0.3325.146)
(Driver info: chromedriver=2.36.540471 (9c759b81a907e70363c6312294d30b6ccccc2752),platform=Linux 4.9.125-linuxkit x86_64)
/var/www/vendor/facebook/webdriver/lib/Exception/WebDriverException.php:102
/var/www/vendor/facebook/webdriver/lib/Remote/HttpCommandExecutor.php:331
/var/www/vendor/facebook/webdriver/lib/Remote/RemoteWebDriver.php:565
/var/www/vendor/facebook/webdriver/lib/Remote/RemoteWebDriver.php:204
/var/www/vendor/laravel/dusk/src/Browser.php:264
/var/www/vendor/laravel/dusk/src/Concerns/ProvidesBrowser.php:141
/var/www/vendor/laravel/framework/src/Illuminate/Support/Traits/EnumeratesValues.php:176
/var/www/vendor/laravel/dusk/src/Concerns/ProvidesBrowser.php:147
/var/www/vendor/laravel/dusk/src/Concerns/ProvidesBrowser.php:70
/var/www/modules/Venues/Tests/Browser/Venue/ResourcesTest.php:87

他们不提供失败屏幕截图,堆栈跟踪会将您带到测试的结束 } 而不是测试中的实际行,所以我只能假设在实际测试开始之前存在问题

我尝试自己对测试进行各种更改,添加等待和睡眠,但没有一个能够摆脱这些问题。它们似乎在运行测试时发生 3/10 次。任何建议将不胜感激,如果我没有留下足够的细节,请告诉我,我很乐意提供更多

此错误消息...

FacebookWebDriverExceptionStaleElementReferenceException: stale element reference: element is not attached to the page document
(Session info: headless chrome=65.0.3325.146)
(Driver info: chromedriver=2.36.540471 (9c759b81a907e70363c6312294d30b6ccccc2752),platform=Linux 4.9.125-linuxkit x86_64)

和此错误消息...

FacebookWebDriverExceptionNoSuchElementException: no such element: Unable to locate element: {"method":"tag name","selector":"body"}
(Session info: headless chrome=65.0.3325.146)
(Driver info: chromedriver=2.36.540471 (9c759b81a907e70363c6312294d30b6ccccc2752),platform=Linux 4.9.125-linuxkit x86_64)

。暗示ChromeDriver无法与浏览上下文(即Chrome浏览器会话(进行交互。


您的主要问题是您使用的二进制文件版本之间的不兼容,如下所示:

  • 您正在使用的 chromedriver=2.36.540471
  • chromedriver=chromedriver=2.36的发行说明明确提到了以下内容:

支持铬 v63-65

  • 您正在使用的 chrome= 65.0

因此,显然chromedriver=2.36chrome= 65.0是兼容的,但可能与当前版本的Selenium客户端v3.141.59不兼容。


溶液

确保:

  • 已升级到当前级别 版本 3.141.59。
  • ChromeDriver已更新到当前的 ChromeDriver v79.0.3945.36 级别。
  • Chrome
  • 已更新到当前的Chrome 版本 79.0级别。(根据 ChromeDriver v79.0 发行说明(
  • 通过IDE清理项目工作中心,并仅使用所需的依赖项重新生成项目。
  • 如果基本 Web 客户端版本太旧,请将其卸载并安装最新的 GA 和已发布版本的Web 客户端
  • 重新启动系统
  • 非 root用户身份执行@Test
  • 始终在方法中调用driver.quit()tearDown(){}以正常关闭和销毁WebDriverWeb 客户端实例。

想发表评论,但堆栈溢出不会让新手添加评论。这可能不是答案,而是一个建议。

尝试在处理元素之前添加静态等待。或者在调试时,在发生异常的位置之前添加断点。通常等待更长的头发可以解决问题。

如果这似乎工作正常,请考虑在处理元素之前实现显式等待元素的显示和启用。

在某些情况下,即使显式等待返回,您可能仍需要执行非常小的静态等待。可以这么说,有时元素仍在滑动。

相关内容

  • 没有找到相关文章

最新更新