13. Selenoid - qa-guru/knowledge-base GitHub Wiki
Если описать максимально просто, Docker — это программа, которая позволяет запускать контейнеры. Контейнер — это что-то вроде виртуальной машины, но более лёгкой и быстрой.
Docker устанавливается на хост-машину и уже тогда может запускать контейнеры, которых может быть несколько и они могут работать одновременно. Внутри контейнеров могут запускаться разные программы и на разных языках. Работать они могут одновременно. У каждого контейнера есть жизненный цикл.
Почему это удобно:
- У каждого запущенного контейнера своя файловая система и доступ к файлам имеет только один контейнер;
- Все необходимые зависимости уже собрано в контейнер и их не надо устанавливать отдельно;
- После удаления контейнера удаляется всё содержимое этих контейнеров и хост-машина остаётся чистой.
Откуда берутся Docker-контейнеры
Контейнеры, берутся из Docker-образов, которые содержат в себе всё необходимое.
Docker-образ это что-то вроде шаблона, на основе которого создаются контейнеры.
С помощью команды docker run
можно развернуть контейнер. Образы можно найти на официальной странице. С помощью команды docker pull <name>
можно локально скачать образ.
Как создаются образы Образы, создаются из Dockerfile. Dockerfile это инструкции для создания образа. В нём можно указать, какие программы установить, какие файлы скопировать и т.д. Пример Dockerfile для установки Nginx:
FROM ubuntu
RUN apt-get update && apt-get -y install nginx
CMD ["nginx", "-g", "daemon off;"]
Для создания из Dockerfile Docker-образ используют команду docker build
, а уже после этого образ можно развернуть в контейнер с помощью docker run
.
Изоляции Ещё раз важно отметить, что у каждого контейнера своя файловая система, которая не пересекается с общей. Также у каждого контейнера свой сетевой интерфейс. При этом есть возможность связать локальные файловую систему и сетевой интерфейс с общими.
Важно! Все команды выполняются в терминале. Если вы используете Windows, то вам нужно использовать терминал Git Bash.
Создать образ:
docker build -t <имя_образа> <путь_до_папки_с_Dockerfile>
Запустить контейнер из образа:
docker run -d --name <имя_контейнера> -p <порт_на_хосте>:<порт_в_контейнере> -v <папка_на_хосте>:<папка_в_контейнере> <имя_образа>
Список всех контейнеров:
docker ps -a
Зайти внутрь контейнера:
docker exec -it <имя_контейнера> /bin/sh
Остановить и удалить контейнер:
docker rm -f <имя_контейнера>
Docker для разных операционных систем можно найти и скачать по ссылке.
Selenoid — это браузеры в контейнерах Docker. Он позволяет запускать тесты в разных браузерах и на разных версиях. Selenoid умеет запускать тесты в параллельном режиме, что позволяет ускорить процесс тестирования.
Важно: на процессорах Apple M1/M2 Selenoid не будет работать, так как все браузеры собраны под архитектуру x86
Подробную текстовую инструкцию по запуску можно найти по ссылке.
- Необходимо скачать бинарный файл
cm
с GitHub: Для этого нужно перейти на страницу релизов GitHub и скачать последнюю версию утилиты под свою операционную систему.
- После скачивания переименовываем файл на
cm
для удобства запуска.
-
Открываем терминал и переходим в папку с файлом
cm
. -
Вводим команду в терминале: Если вы используете Linux and Mac OS то команда
./cm selenoid start --vnc
Если вы используете Windows то команда./cm.exe selenoid start --vnc
Установка может занять некоторое время. Так как при установке Selenoid скачиваются Docker-образы последних браузеров.
Если у вас не отображается установка браузеров, то нужно ввести команду .\cm selenoid cleanup
и потом повторить команду установки selenoid.
Если всё установлено успешно будут отображены сообщения:
Selenoid is already configured
Starting Selenoid...
Successfully started Selenoid
- После этого можно открыть в браузере страницу
http://localhost:4444/
илиhttp://127.0.0.1:4444/
и увидеть интерфейс Selenoid. Если вы запускаете Selenoid на удаленной машине, то вместоlocalhost
илиhttp://127.0.0.1
нужно указать IP-адрес машины.
- Также можно проверить какой докер образ сейчас запущен с помощью команды
docker ps
.
- Для того чтобы в браузере отображался VNC-клиент(ui часть), нужно запустить команду
./cm selenoid-ui start
.
Если всё установлено успешно, то в терминале будет отображен текст:
Starting Selenoid UI...
Successfully started Selenoid UI
Далее можно открыть в браузере страницу http://localhost:8080/
или http://127.0.0.1:8080/
и увидеть интерфейс Selenoid UI.
И уже можно полноценно работать с Selenoid, запускать тесты, открывать браузеры вручную и т.д.
После запуска Selenoid можно запускать тесты на нем. Для этого нужно изменить код в фикстуре и в аттачах. Пример для фикстуры:
driver = webdriver.Remote(
command_executor="http://127.0.0.1:8080/wd/hub",
options=options)
Пример для аттача:
video_url = f'http://127.0.0.1:8080/video/{browser.driver.session_id}.mp4'
После запуска теста запустится новая сессия в Selenoid, в которой выполнится тест. Все действия будут записаны в видеофайле, который можно будет посмотреть в интерфейсе Selenoid UI или в аллюр отчете.
Для добавления браузеров в Selenoid необходимо внести изменения в файл browsers.json
.
Этот файл находится в папке ~/.aerokube/selenoid/
или в корневой папке вашего пользователя.
В файле browsers.json
можно добавить новые браузеры и версии браузеров.
Для этого нужно открыть файл в текстовом редакторе и через терминал открыть редактор nano browsers.json
. или vim browsers.json
.
К примеру нам нужно добавить браузер Safari. Для этого нужно добавить следующий код в файл browsers.json
:
{
"safari": {
"default": "15.0",
"versions": {
"15.0": {
"image": "browsers/safari:15.0",
"port": "4444",
"path": "/"
}
}
},
"тут ниже идет другой код по умолчанию"
Сохранить файл после добавления нового браузера.
После этого нужно скачать образ браузера.
Для этого переходим на страницу docker hub и ищем нужный образ.
В строке поиска указываем название браузера и версию. Например, browsers/safari
и в строке с версией нажимаем на кнопку Copy
.
Далее в терминале вводим скопированную команду docker pull browsers/safari:15.0
и ждем пока образ скачается.
После этого можно перезапустить Selenoid командой docker restart selenoid
.
После добавления нового браузера в Selenoid нужно проверить отображается ли он в интерфейсе Selenoid UI.
А также необходимо проверить правильно ли добавлен браузер в Selenoid, для этого нужно запустить в ручном режиме добавленный браузер.
Если всё работает, и запустился браузер, то значит всё сделано правильно. Если нет, то нужно проверить правильность добавления браузера в файл browsers.json
.
После запуска браузера создается докер-контейнер с браузером, после закрытия сессии контейнер удаляется.
Для того чтобы открыть браузер в ручном режиме нужно в интерфейсе Selenoid UI необходимо перейти на вкладку CAPABILITIES
.
Далее выбрать из выпадающего списка любой браузер и версию и нажать на кнопку Create session
.
После того как нажали на кнопку, откроется новая вкладка с браузером, который запущен в Selenoid.
Увеличения размера браузера
Чтобы увеличить размер браузера, нужно нажать на зеленую кнопку в левом верхнем углу браузера.
Управление окном браузера
Чтобы можно было управлять браузером, нужно нажать на синюю кнопку по средине в левом верхнем углу браузера
Закрытие окна браузера(визуального отображения)
Чтобы закрыть окно браузера, нужно нажать на красную кнопку в левом верхнем углу браузера.(данная кнопка закрывает отображение браузера в Selenoid UI, но сам браузер остается запущенным)
Вставка текста в браузер
Чтобы что-то вставить в браузер, нужно нажать на иконку со стрелкой в левом правом углу браузера.
Копирование текста из браузера
Чтобы скопировать текст из браузера, нужно нажать на иконку с копированием в левом правом углу браузера.
Закрытие браузера(полное закрытие сессии)
Чтобы закрыть браузер, необходимо нажать на красную кнопку в левом верхнем углу браузера(описано в пункте Закрытие окна браузера(визуального отображения)
).
И далее в строке с сессий браузеров нажать на иконку корзины.
GGR (Grid Router) — это прокси-сервер(балансировщик). Он позволяет управлять сессиями, перенаправлять запросы на Selenoid и многое другое. Больше информации о GGR можно найти на официальном сайте.
Для начала нужно установить Docker Desktop.
- Для этого нужно перейти на сайт Docker и скачать установщик для вашей операционной системы.
- Далее открыть установщик и следовать инструкциям.
- Нажать кнопку
Skip Survey
.
- После установки Docker Desktop запустить его и дождаться пока он запустится. Запущенный Docker Desktop будет отображен в следующем виде:
Больше информации о Docker Desktop можно найти на официальном сайте.
В Docker Desktop можно запускать и останавливать контейнеры, а также управлять ими.
На вкладке Containers
можно увидеть все запущенные контейнеры и их статус, порты и другую информацию.
На вкладке Images
можно увидеть все образы, которые установлены на вашем компьютере. Которые можно запустить в контейнере. Или при необходимости удалить.