通过Laravel Dusk使用ChromeDriver ChromeSelenium导致不一致的StaleElementReferenceException和NoSuchElementException错误

时间:2020-01-06 09:37:51

标签: php selenium google-chrome selenium-chromedriver laravel-dusk

我经常运行约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次。任何建议将不胜感激,如果我没有留下足够的细节,请告诉我,很高兴提供更多信息

1 个答案:

答案 0 :(得分:0)

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

尝试在元素寻址之前添加静态等待。或者在调试时,在发生异常的位置之前添加一个断点。通常,等待较长时间才能解决该问题。

如果这似乎行之有效,那么请考虑在寻址该元素之前实现显式等待该元素的显示和启用。

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