Вот то, что я узнал после целой дневной и ночной борьбы, пытаясь запустить селен с последней версией Chrome на виртуальной машине Ubuntu.
Вам нужно выяснить три основных момента;
chromium-browser
or google-chrome-stable
chromedriver
Xvfb
Давайте рассмотрим их пошагово (спойлер: поделюсь установочными фрагментами)
Chrome-браузер
Это актуальный браузер Chrome, основа.
Когда вы устанавливаете google-chrome-stable
, вы фактически получаете последнюю версию chromium-browser
. Здесь нет ничего хитрого.
хромированная отвертка
chromedriver
- это двоичный файл, необходимый для автоматического тестирования (селен).
Эта часть сложна, потому что chromedriver
должна иметь ту же версию, что и chromium-browser
. Если вы скопируете то, что нашли в stackoverflow, вы потратите впустую часы, как и я сегодня.
Вы можете найти последние версии chromedriver
по этой ссылке.
Xvfb
Проще говоря, Xvfb - это сервер отображения в памяти для UNIX-подобной операционной системы. Говоря простым языком: «Для запуска Chrome нужен дисплей, и Xvfb это делает».
Тогда давайте установим;
sudo apt-get install xvfb
Мы воспользуемся этим позже.
Теперь самое интересное
установить NodeJS
Я использовал NodeJS 8.x, вы можете предпочесть любую версию по вашему выбору.
sudo apt-get update sudo apt-get install curl curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash - sudo apt-get install nodejs build-essential sudo npm install -g npm
установить клиент Selenium NodeJS
npm install selenium-webdriver
добавить простой тестовый скрипт
vim rollOutExperiment.js
откройте google.com и верните внутренний текст <html>
Всякий раз, когда я получаю сообщение об ошибке от драйвера Chrome и выполняю поиск, все, что я нахожу, - это все, кто упоминает, что мне нужно добавить следующие флаги. Лучше держи их подальше 😅
--disable-dev-shm-usage
& —-no-sandbox
запустить дисплей и запустить фиктивный тест
Xvfb :1 -screen 0 1024x768x24 & export DISPLAY=:1 node rollOutExperiment.js
Да вот и все. Я не смог найти свежую статью с этой подборкой и потерял лишние часы, поэтому хочу поделиться своим опытом. Сообщите мне, если вы найдете это полезным.