Сумерки с селеном не работают с Ларадоком


Сумерки с селеном не работают с Ларадоком

12.01.2020 02:16:10 Просмотров 95 Источник

Я запускаю Dusk, чтобы проверить свое приложение Laravel. Я недавно переключился на Laradock, который занял некоторое время, чтобы настроить все это, поскольку у меня мало опыта работы с Docker, но теперь все это, кажется, работает. Вот только селен, похоже, работает не так, как надо.

Я начинаю и открываю свое рабочее пространство вот так:

sudo docker-compose up -d nginx postgres beanstalkd selenium
sudo docker-compose exec --user=laradock workspace bash

и затем

php artisan dusk

1) Tests\Browser\SuccessLoginTest::test_user_can_login
Facebook\WebDriver\Exception\NoSuchElementException: no such element: Unable to locate element: {"method":"css selector","selector":"body textarea[name='email']"}
  (Session info: headless chrome=75.0.3770.90)
For documentation on this error, please visit: https://www.seleniumhq.org/exceptions/no_such_element.html
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:53'
System info: host: 'f8c1169cd1a3', ip: '172.18.0.3', os.name: 'Linux', os.arch: 'amd64', os.version: '5.4.7-100.fc30.x86_64', java.version: '1.8.0_212'
Driver info: driver.version: unknown

Я получаю скриншот неудачного теста, показывающий веб-сайт, и на нем элемент and, который он, похоже, не может найти. До того, как я переключился на Laradock, все работало нормально, так что проблемы, похоже, с селеном. Моя настройка выглядит так, и я использую Laravel 5.7.28

protected function driver()
{
    $options = new ChromeOptions();

    $options->addArguments([
        '--headless',
        '--no-sandbox',
        '--disable-gpu',
        '--window-size=1920,1080',
        '--ignore-certificate-errors'
    ]);

    $capabilities = DesiredCapabilities::chrome();
    $capabilities->setCapability(ChromeOptions::CAPABILITY, $options);

    if (env('USE_SELENIUM', 'false') == 'true') {
        return RemoteWebDriver::create(
            'http://selenium:4444/wd/hub', $capabilities
        );
    } else {
        return RemoteWebDriver::create(
            'http://localhost:9515', $capabilities
        );
    }
У вопроса есть решение - Посмотреть?

Ответы - Сумерки с селеном не работают с Ларадоком / Dusk with Selenium not working with Laradock

DebanjanB

12.01.2020 03:39:15

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

Facebook\WebDriver\Exception\NoSuchElementException: no such element: Unable to locate element: {"method":"css selector","selector":"body textarea[name='email']"}
  (Session info: headless chrome=75.0.3770.90)
For documentation on this error, please visit: https://www.seleniumhq.org/exceptions/no_such_element.html
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:53'
System info: host: 'f8c1169cd1a3', ip: '172.18.0.3', os.name: 'Linux', os.arch: 'amd64', os.version: '5.4.7-100.fc30.x86_64', java.version: '1.8.0_212'
Driver info: driver.version: unknown

...подразумевает, что исключение NoSuchElementException было вызвано во время выполнения программы.


Немного подробностей о ваших тестовых конфигурационных интермах версии chromedriver помогли бы нам лучше отладить вашу проблему. Однако вам нужно позаботиться о нескольких вещах:

  • Целью аргумента --disable-gpuбыло включить на платформе windows. Это было необходимо, поскольку SwiftShader ранее не выполнял assert на Windows в безголовом режиме. Эта проблема была решена с помощью Headless: make --disable-gpu flag ненужным . Поскольку вы находитесь на / / в , вам нужно удалить строку кода:

    '--disable-gpu' // applicable to windows os only
    
  • В соответствии с вашим вопросом, как вы используете chrome=75.0 . вам нужно обеспечить:

    • ChromeDriver обновлен до ChromeDriver v75. 0 в соответствии с примечаниями к выпуску chromedriver=75.0
  • Сказав это, в идеале вам нужно убедиться, что:
    • JDK обновлен до текущих уровней JDK 8u222 .
    • Селен обновлен до текущих уровней версии 3.141.59 .
    • ChromeDriver обновляется до текущей ChromeDriver v79.0.3945.36 уровень.
    • Chrome обновлен до текущего уровня Chrome версии 79.0. (согласно примечаниям к выпуску ChromeDriver v79. 0)
    • Очистите рабочую область проекта через IDE и перестроите проект только с необходимыми зависимостями.
    • (Только WindowsOS ) используйте CCleaner tool, чтобы стереть все хлопоты ОС до и после выполнения Вашего набора тестов .
    • (Только LinuxOS ) освободите и освободите неиспользуемую/кэшированную память в Ubuntu/Linux Mint до и после выполнения Вашего набора тестов .
    • Если ваша базовая версия веб-клиента слишком старая, то удалите ее через Revo Uninstaller и установите последнюю версию GA и выпущенную версию веб-клиента .
    • Сделайте перезагрузку системы .
    • Выполните свой @Testкак некорневой пользователь.
    • Всегда вызывайте driver.quit()в рамках tearDown(){}для изящного закрытия и уничтожения экземпляров WebDriver и Web-клиента.

Ссылка

Вы можете найти соответствующее подробное обсуждение в разделе:

https://stackoverflow.com/questions/59703242/dusk-with-selenium-not-working-with-laradock/59703883#comment105560718_59703883
Снимаю шляпу перед вашим временем и усилиями.Большинство людей, скорее всего, избегают такого длинного вопроса, и кажется, что у вас есть все время и ответ, когда есть какие-либо проблемы, связанные с селеном.Такой преданный вкладчик
https://stackoverflow.com/questions/59703242/dusk-with-selenium-not-working-with-laradock/59703883#comment105560731_59703883
@KunduK Спасибо за красивые слова !!!
https://stackoverflow.com/questions/59703242/dusk-with-selenium-not-working-with-laradock/59703883#comment105560917_59703883
Большое спасибо за помощь до сих пор. Я не уверен, что правильно понял ваше замечание "немного подробностей о Вашей тестовой конфигурации с точки зрения версии chromedriver". Разве ошибка не показывает, что он использует 75.0.3770.90 ? Поскольку вы утверждаете, что есть более новая версия, я сейчас пытаюсь использовать v79. В данный момент я сделал рывок на Laradock и перестраиваюсь. Я посмотрю, поможет ли это решить какие-либо проблемы. Я понимаю об ошибке NoSuchElement, но проблема в том, что элемент есть. Как-то его не нашли.
https://stackoverflow.com/questions/59703242/dusk-with-selenium-not-working-with-laradock/59703883#comment105560974_59703883
@Matthieu headless chrome=75.0.3770.90подразумевает версию браузера chrome. Тогда Driver info: driver.version: unknownв какой-то момент версия chromedriver не была обнаружена.
https://stackoverflow.com/questions/59703242/dusk-with-selenium-not-working-with-laradock/59703883#comment105563015_59703883
Может ли это быть ключом к тому, что он там неизвестен? Концентратор Selenium Webdriver hub говорит это с помощью chromedriverVersion": "75.0.3770.90. Кажется, застрял, хотя на обновлении до v79.
https://stackoverflow.com/questions/59703242/dusk-with-selenium-not-working-with-laradock/59703883#comment105563353_59703883
Нет, 75.0.3770.90 - это версия chrome=75.0.3770.9075.0.3770.90 и не может быть версией chromedriver.
Помочь в развитии проекта:
Закрыть X