Selenium - это платформа для автоматического тестирования веб-приложений, которая позволяет не только тестировать программное обеспечение, но и создавать различные программы для автоматизации задач, выполняемых в браузере. Программа может работать с браузером так же, как и человек - двигать мышкой, кликать, листать страницы, находить элементы по классу, имени, css селектору или xpath, а также делать снимки веб-страницы.
Платформа работает на Java и для подключения к браузерам использует драйвера браузеров. Есть драйвер для Chrome, Firefox, Opera, IE. Также в рамках Chrome можно пользоваться эмулятором мобильных платформ. В этой статье мы рассмотрим как выполняется установка Selenium Linux на примере Ubuntu.
Содержание статьи
Установка Selenium в Linux
1. Установка Java
Поскольку для работы программы нужна Java, сначала вам придется её установить. Вы можете воспользоваться статьей установка java в linux чтобы найти как установить этот пакет программ в свою систему. В Ubuntu можно установить версию OpenJDK такой командой:
sudo apt install openjdk-8-jre
Я специально написал в заголовке linux, на не Ubuntu, или другой дистрибутив, потому, что установка в большинстве дистрибутивов практически не будет отличаться. Далее вам нужно установить браузер, скачать драйвера для нужных браузеров, а потом скачать исполняемый файл Selenium и всё.
2. Установка браузеров и драйверов
Поддержку IE в Linux, получить не получится, но мы можем работать с Chrome и Firefox. Для установки этих браузеров выполните:
sudo apt install firefox chromium-browser
Скачайте самую последнюю версию драйвера для Chrome из официальной страницы. Обратите внимание, что версия драйвера должна соответствовать версии вашего браузера. Версию Chrome можно узнать открыв chrome://settings/help
Для Chrome 76 нужно использовать такую же версию драйвера.
На данный момент самая свежая - это ChromeDriver 76.0.3809.68:
wget https://chromedriver.storage.googleapis.com/76.0.3809.68/chromedriver_linux64.zip
Далее распакуйте полученный архив и переместите драйвер в папку /usr/local/bin:
unzip chromedriver_linux64.zip
sudo mv chromedriver /usr/local/bin/chromedriver
sudo chown root:root /usr/local/bin/chromedriver
sudo chmod +x /usr/local/bin/chromedriver
Теперь надо установить selenium webdriver для Firefox. Он называется GeckoDriver и скачать его можно на этой странице. Аналогично, надо распаковать полученный архив и переместить файл geckodriver в /usr/local/bin:
tar -xvzf geckodriver_linux64.tar.gz
sudo mv geckodriver /usr/local/bin/geckodriver
sudo chown root:root /usr/local/bin/geckodriver
sudo chmod +x /usr/local/bin/geckodriver
Далее можно переходить к установке Selenium в Linux.
3. Установка Selenium
Платформа selenium представляет из себя обычную java программу, которую можно скачать на официальном сайте.
На момент написания статьи самая последняя версия программы 3.141.59:
wget https://selenium-release.storage.googleapis.com/3.141/selenium-server-standalone-3.141.59.jar
Далее загруженную программу можно запустить с помощью java машины и можно начинать тесты:
java -jar selenium-server-standalone-3.141.59.jar
Если вы хотите запускать программу на сервере, где не установлена графическая оболочка, то вам понадобится пакет xvfb, в котором реализован виртуальный фреймбуфер в памяти:
sudo apt install xvfb libxi6 libgconf-2-4
xvfb-run java -jar selenium-server-standalone-3.141.59.jar
Если вы не хотите запускать selenium вручную, можно настроить автоматический запуск программы при старте системы. Сначала надо переместить Selenium в какую нибудь системную директорию, например, в /usr/bin/local:
sudo mv selenium-server-standalone-3.141.59.jar /usr/local/bin/
Создайте нового пользователя, от имени которого будет работать Selenium:
sudo useradd -d /tmp/ selenium
4. Настройка Selenium и systemd в графике
Далее надо разрешить этому пользователю подключаться к дисплейному серверу:
xhost +SI:localuser:selenium
И в автозагрузку:
vi ~/.xinitrc
Теперь напишем такой systemd юнит:
sudo vi /etc/systemd/system/selenium.service
Теперь выполните такие команды для добавления сервиса в автозагрузку и запуска:
sudo systemctl --system daemon-reload
sudo systemctl enable selenium
sudo systemctl start selenium
5. Настройка Selenium и systemd в xvfb
Если вы захотите запускать Selenium на сервере без графического интерфейса, то вам понадобится виртуальный фреймбуфер xvfb. Для этого сначала установите эту утилиту:
sudo apt install xvfb
Далее создадим файл сервиса для запуска xvfb:
sudo vi /etc/systemd/system/xvfb.service
Затем делаем файл сервиса для Selenium:
sudo vi /etc/systemd/system/selenium.service
Затем, как и в предыдущем случае, нам остается выполнить несколько команд systemd, чтобы перечитать конфигурационные файлы с диска:
sudo systemctl --system daemon-reload
sudo systemctl start xvfb
sudo systemctl start selenium
6. Настройка Selenium и PHP
За время развития Selenium для него было написано множество библиотек для разных языков. Дальше мы рассмотрим как использовать эту программу вместе с PHP. Благодаря стараниям Facebook это возможно. Только необходимо установить пакет facebook/webdriver с помощью composer:
composer require facebook/webdriver
Далее вы можете использовать эту библиотеку в своих скриптах:
vi test-selenium.php
Готово. Теперь осталось выполнить скрипт и если все было сделано правильно, перед вами откроется браузер.
Выводы
В этой статье мы рассмотрели как установить Selenium в Ubuntu 18.04. С установкой программы надо поиграться, но возможности по автоматизации тестированию, которые она предоставляет однозначно того стоят.
$sudo chmod +x /usr/bin/local/geckodriver
Тут кажись опечатка , должно быть /usr/local/bin/geckodriver
Боже мой, какая мерзость... с python достаточно веб драйвер скачать, и библиотеку. Лол, сочувствую вам
С Node js - Puppeteer вообще ничего качать не нужно
Простите, может быть глупый вопрос но после запуска в командной строке java -jar selenium-server-standalone-#.jar где я должен по вашему пункту 6 разместить этот php скрипт? У меня в браузере в адресной строке http://localhost:4444/ Открывается страница :
Selenium Standalone v.3.141.59
Whoops! The URL specified routes to this help page. и тд... А дальше куда??? Захожу в консоль, выбираю браузер.. Скрипт php откуда запускать?Если выбрать load script, то он предлагает: "Open a page that has the WebDriverJS client. The page will be opened with the query parameters required to communicate with the server." Вроде тут про JS говорится... Или я что то не так сделал? Подскажите плз
что это за хрень? Куча каких то непонятных шагов.... для чего это все?
работаю с линуксами уже несколько лет
тупо хрееень
Большое спасибо, очень помогла статья
При установке GeckoDriver в Linux Mint вышла ошибка:
chmod: невозможно получить доступ к '/usr/bin/local/geckodriver': Нет такого файла или каталога
Как это исправить?
опечатка в статье. Нужно написать `sudo chmod +x /usr/local/bin/geckodriver` вместо `sudo chmod +x /usr/bin/local/geckodriver`
А без php обойтись можно как-то?
Запускаю - вот, ошибка:
~/selenium_java$ ./test-selenium.php
./test-selenium.php: line 1: ?php: No such file or directory
./test-selenium.php: line 2: syntax error near unexpected token `'./vendor/autoload.php''
./test-selenium.php: line 2: `require ('./vendor/autoload.php');'