Главная >> Инструкции >> Установка Selenium в Linux

Установка Selenium в Linux

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

xhost +SI:localuser:selenium

Теперь напишем такой systemd юнит:

sudo vi /etc/systemd/system/selenium.service

[Unit]
Description=Selenium Standalone Server
After=multi-user.target
[Service]
Type=simple
WorkingDirectory=/tmp/
Environment=DISPLAY=:0
ExecStart=/usr/bin/java -jar /usr/local/bin/selenium-server-standalone-3.141.59.jar
WantedBy=multi-user.target
KillMode=process
User=selenium
[Install]
WantedBy=multi-user.target

Теперь выполните такие команды для добавления сервиса в автозагрузку и запуска:

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

[Unit]
Description=X virtual framebuffer
[Service]
Type=simple
User=root
ExecStart=/usr/bin/Xvfb :99 -ac
[Install]
WantedBy=multi-user.target

Затем делаем файл сервиса для Selenium:

sudo vi /etc/systemd/system/selenium.service

[Unit]
Description=Selenium Standalone Server
Requires=xvfb.service
After=xvfb.service
[Service]
Type=simple
User=selenium
WorkingDirectory=/tmp/
Environment=DISPLAY=:99
ExecStart=/usr/bin/java -jar /usr/local/bin/selenium-server-standalone-3.141.59.jar
[Install]
WantedBy=multi-user.target

Затем, как и в предыдущем случае, нам остается выполнить несколько команд 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

<?php
require ('./vendor/autoload.php');
use Facebook\WebDriver\Remote\DesiredCapabilities;
use Facebook\WebDriver\Remote\RemoteWebDriver;
use Facebook\WebDriver\Remote\DriverCommand;
use Facebook\WebDriver\WebDriverExpectedCondition;
use Facebook\WebDriver\WebDriverBy;
$host = 'http://localhost:4444/wd/hub';
$desiredCapabilities = DesiredCapabilities::chrome();
$driver = RemoteWebDriver::create($host, $desiredCapabilities);
$driver->get("https://google.com");

Готово. Теперь осталось выполнить скрипт и если все было сделано правильно, перед вами откроется браузер.

Выводы

В этой статье мы рассмотрели как установить Selenium в Ubuntu 18.04. С установкой программы надо поиграться, но возможности по автоматизации тестированию, которые она предоставляет однозначно того стоят.

Creative Commons License
Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .

9 комментариев к “Установка Selenium в Linux”

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

    Ответить
  2. что это за хрень? Куча каких то непонятных шагов.... для чего это все?

    работаю с линуксами уже несколько лет

    тупо хрееень

    Ответить
  3. При установке GeckoDriver в Linux Mint вышла ошибка:
    chmod: невозможно получить доступ к '/usr/bin/local/geckodriver': Нет такого файла или каталога
    Как это исправить?

    Ответить
  4. А без 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');'

    Ответить

Оставьте комментарий