Непоследовательная ошибка StaleElementReferenceException и NoSuchElementException при использовании ChromeDriver ChromeSelenium через Laravel Dusk - PullRequest
0 голосов
/ 06 января 2020

Я часто запускаю тестовый набор из 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 раз, когда тест выполняется. Буду признателен за любые предложения, и, пожалуйста, дайте мне знать, если я не оставил достаточно подробностей, я рад предоставить больше

Ответы [ 2 ]

0 голосов
/ 21 февраля 2020

Хотел оставить комментарий, но переполнение стека не позволит новичку добавить комментарий. Вероятно, это не ответ на каждое высказывание, а предложение.

Попробуйте добавить stati c, прежде чем элемент будет адресован. Или, когда вы отлаживаете, добавьте точку останова до того, где происходит исключение. Обычно ожидание волос дольше решало проблему.

Если это работает хорошо, подумайте о реализации явного ожидания отображения и включения элемента, прежде чем обращаться к элементу.

В некоторых случаях даже когда явное ожидание вернется, вам все равно придется выполнить очень маленькое ожидание. Иногда элементы все еще скользят, так сказать.

0 голосов
/ 06 января 2020

Это сообщение об ошибке ...

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 браузер * сеанс 1012 *.


Ваша главная проблема - несовместимость между версией двоичные файлы, которые вы используете следующим образом:

  • Вы используете chromedriver = 2.36.540471
  • Замечания по выпуску chromedriver = chromedriver = 2.36 четко упоминает следующее:

Опоры Chrome v63-65

  • Вы использование chrome = 65.0

Таким образом, очевидно, chromedriver = 2.36 и chrome = 65.0 совместимы, но могут быть несовместимы с текущей версией из Selenium Client v3.141.59 .


Решение

Убедитесь, что:

  • Selenium обновлено до текущего уровня s Версия 3.141.59 .
  • ChromeDriver обновлен до текущего ChromeDriver v79.0.3945.36 уровень.
  • Chrome обновлен до текущего Chrome Версия 79.0 уровень. (согласно примечаниям к выпуску ChromeDriver v79.0 )
  • Очистить ваше Рабочее пространство проекта через IDE и Перестройте ваш проект только с необходимыми зависимостями.
  • Если ваша базовая версия Web Client устарела, удалите ее и установите последнюю версию GA и выпущенную версию Web Клиент .
  • Возьмите Перезагрузка системы .
  • Выполните @Test как не- root пользователь.
  • Всегда вызывайте driver.quit() в методе tearDown(){}, чтобы закрыть и уничтожить WebDriver и Веб-клиент экземпляров изящно.
...