#php #laravel #chromium #headless #laravel-dusk
Вопрос:
Я установил Laravel Dusk для тестирования веб-сайта. Я перепробовал все решения на Stackoverflow по этой проблеме, но ничего не сработало.
Мне нужно запустить браузер без головы, потому что я запускаю тесты на своем сервере Linux.
Текущая версия chromedriver-linux является:
./vendor/laravel/dusk/bin/chromedriver-linux --v
ChromeDriver 90.0.4430.24 (4c6d850f087da467d926e8eddb76550aed655991-refs/branch-heads/4430@{#429})
Текущая версия Chromium является:
chromium-browser --version --no-sandbox
Chromium 90.0.4430.93 snap
Когда я запускаю Сумерки, я получаю ошибку:
Operation timed out after 30001 milliseconds with 0 bytes received
Curl error thrown for http POST to /session with params: {"capabilities":{"firstMatch":[{"browserName":"chrome","platformName":"linux","goog:chromeOptions":{"args":["--headless","--disable-gpu","--no-sandbox"]}}]},"desiredCapabilities":{"browserName":"chrome","platform":"linux","chromeOptions":{"args":["--headless","--disable-gpu","--no-sandbox"]}}}
Есть ли какой-нибудь способ решить эту проблему? Я попытался добавить аргументы "--headless","--disable-gpu","--no-sandbox"
, но, к сожалению, это не работает.
Ответ №1:
друг!
Я предполагаю, что вы находитесь на хостинге Windows с Homestead (Windows 10, Homestead 10 и Laravel 8). Если нет, я не уверен, что этот ответ поможет. Но это помогло мне буквально несколько минут назад, так что я чувствую себя обязанным.
Dusk
похоже, не нравитсяChromium
и желает полного хрома. Так что давайте установим его:
cd ~
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo apt install ./google-chrome-stable_current_amd64.deb
Это позволит загрузить последнюю стабильную версию Google Chrome и установить ее.
- Убедитесь, что папка вашего проекта
vendor/laravel/dusk/bin/
является исполняемой, как указано в документах. Итак, в корне вашего проекта:
chmod -R 0755 vendor/laravel/dusk/bin/
- Убедитесь, что у вас установлен последний драйвер chromium:
php artisan dusk:chrome-driver --detect
3.1. Если вам будет трудно (не удается переименовать, не удается переместить файлы и т. д.)-это, вероятно, потому, что у вас уже запущен драйвер, поэтому выйдите из Homestead и просто
vagrant reload
вернитесь обратно в усадьбу и повторите 3 выше.
- Убедитесь, что вы в состоянии завить свой
APP_URL
. Допустим, это такlaravel.app
:
curl http://laravel.app
Если нет, проверьте /etc/hosts
, вы ожидаете увидеть что — то вроде 127.0.0.1 laravel.app
— следуя нашему предположению об URL-адресе. Обычно это устанавливается самой усадьбой, когда вы предоставляете новый сайт.
Вуаля.
php artisan dusk
все прошло успешно.
Это все исправило для меня.
Я потратил непомерное количество времени, которое можно было бы сэкономить с помощью одной строки в документах «Если вы используете Homestead в Windows, обязательно установите Google Chrome«.
Счастливого кодирования!
Комментарии:
1. Спасибо за это. Я упомянул linux в своем посте. В любом случае, я перешел на Symfony Panther, и это работает 🙂