使用Laravel Dusk使用ChromeDriver ChromeSelenium产生不一致的StaleElementReferenceException和NoSuchElementException错误

问题描述 投票:0回答:1

我经常运行约250个测试的测试套件。每次运行此测试套件时,每次出现不同的测试时,都会返回不一致的错误。返回不一致错误的示例:

Facebook\WebDriver\Exception\StaleElementReferenceException: 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
Facebook\WebDriver\Exception\NoSuchElementException: 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次。任何建议将不胜感激,如果我没有留下足够的细节,请告诉我,我们乐意提供更多信息

php selenium google-chrome selenium-chromedriver laravel-dusk
1个回答
0
投票

此错误消息...

Facebook\WebDriver\Exception\StaleElementReferenceException: 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)

以及此错误消息...

Facebook\WebDriver\Exception\NoSuchElementException: 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浏览器会话进行交互。


您的主要问题是正在使用的二进制版本之间的incompatibility,如下所示:

支持Chrome v63-65

  • 您正在使用chrome = 65.0

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


解决方案

确保:

  • Selenium已升级到当前级别Version 3.141.59
  • ChromeDriver已更新为当前ChromeDriver v79.0.3945.36级别。
  • Chrome已更新为当前的Chrome 79.0级。 (根据ChromeDriver v79.0 release notes
  • Clean您的Project Workspace通过您的IDERebuild您的项目仅具有必需的依赖项。
  • 如果您的基本Web Client版本太旧,则将其卸载并安装最新的GA和Web Client的发行版本。
  • 进行系统重启
  • 非root用户身份执行@Test。>>
  • 总是在driver.quit()方法中调用tearDown(){}以正常关闭并销毁WebDriver
  • Web Client实例。
© www.soinside.com 2019 - 2024. All rights reserved.