Skip to content

13. Selenoid

BohdanObruch edited this page May 24, 2024 · 4 revisions

Введение в Docker

Если описать максимально просто, 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

Selenoid — это браузеры в контейнерах Docker. Он позволяет запускать тесты в разных браузерах и на разных версиях. Selenoid умеет запускать тесты в параллельном режиме, что позволяет ускорить процесс тестирования.

Установка Selenoid

Важно: на процессорах Apple M1/M2 Selenoid не будет работать, так как все браузеры собраны под архитектуру x86

Подробную текстовую инструкцию по запуску можно найти по ссылке.

  1. Необходимо скачать бинарный файл cm с GitHub: Для этого нужно перейти на страницу релизов GitHub и скачать последнюю версию утилиты под свою операционную систему.

  1. После скачивания переименовываем файл на cm для удобства запуска.

  1. Открываем терминал и переходим в папку с файлом cm.

  2. Вводим команду в терминале: Если вы используете 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

  1. После этого можно открыть в браузере страницу http://localhost:4444/ или http://127.0.0.1:4444/ и увидеть интерфейс Selenoid. Если вы запускаете Selenoid на удаленной машине, то вместо localhost или http://127.0.0.1 нужно указать IP-адрес машины.

  1. Также можно проверить какой докер образ сейчас запущен с помощью команды docker ps.

  1. Для того чтобы в браузере отображался 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

После запуска 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

Для добавления браузеров в 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

Для того чтобы открыть браузер в ручном режиме нужно в интерфейсе Selenoid UI необходимо перейти на вкладку CAPABILITIES. Далее выбрать из выпадающего списка любой браузер и версию и нажать на кнопку Create session.

После того как нажали на кнопку, откроется новая вкладка с браузером, который запущен в Selenoid.

Увеличения размера браузера

Чтобы увеличить размер браузера, нужно нажать на зеленую кнопку в левом верхнем углу браузера.

Управление окном браузера

Чтобы можно было управлять браузером, нужно нажать на синюю кнопку по средине в левом верхнем углу браузера

Закрытие окна браузера(визуального отображения)

Чтобы закрыть окно браузера, нужно нажать на красную кнопку в левом верхнем углу браузера.(данная кнопка закрывает отображение браузера в Selenoid UI, но сам браузер остается запущенным)

Вставка текста в браузер

Чтобы что-то вставить в браузер, нужно нажать на иконку со стрелкой в левом правом углу браузера.

Копирование текста из браузера

Чтобы скопировать текст из браузера, нужно нажать на иконку с копированием в левом правом углу браузера.

Закрытие браузера(полное закрытие сессии)

Чтобы закрыть браузер, необходимо нажать на красную кнопку в левом верхнем углу браузера(описано в пункте Закрытие окна браузера(визуального отображения)). И далее в строке с сессий браузеров нажать на иконку корзины.

GGR (Grid Router)

GGR (Grid Router) — это прокси-сервер(балансировщик). Он позволяет управлять сессиями, перенаправлять запросы на Selenoid и многое другое. Больше информации о GGR можно найти на официальном сайте.

Docker Desktop

Установка Docker Desktop

Для начала нужно установить Docker Desktop.

  1. Для этого нужно перейти на сайт Docker и скачать установщик для вашей операционной системы.

  1. Далее открыть установщик и следовать инструкциям.

  1. Нажать кнопку Skip Survey.

  1. После установки Docker Desktop запустить его и дождаться пока он запустится. Запущенный Docker Desktop будет отображен в следующем виде:

Больше информации о Docker Desktop можно найти на официальном сайте.

Работа с Selenoid через Docker Desktop

В Docker Desktop можно запускать и останавливать контейнеры, а также управлять ими. На вкладке Containers можно увидеть все запущенные контейнеры и их статус, порты и другую информацию.

На вкладке Images можно увидеть все образы, которые установлены на вашем компьютере. Которые можно запустить в контейнере. Или при необходимости удалить.

Содержание
Командная строка
Кодировка UTF-8 в Java
Список полезных книг для автоматизаторов тестирования на языке Java
Список полезных книг для автоматизаторов тестирования на языке Python Структура проекта Github README.md

Java:
1. Вводное занятие. Сразу к практике.
2. Git. GitHub. Погружаемся.
3. Погружаемся в инструментарий и библиотеки
4. Основы Java
5. Продолжаем разрабатывать автотесты. PageObjects
6. JUnit 5
7. Allure Reports
8. Работа с файлами
9. Selenide #1
10. Jenkins. Создаем первую задачу
11. Управляем параметрами в коде и в Jenkins
12. Отправляем уведомления о результатах прохождения автотестов
13. Учимся быстро разрабатывать проекты для тестовых заданий
14. Selenoid
15. Библиотека Owner
16. REST API. Пишем автотесты с Rest assured
17. REST API. Декомпозируем UI тесты. Подключаем отчетность
18. REST API. Продолжаем изучать
19. Мобильная автоматизация #1. Разрабатываем автотесты с Browserstack
20. Allure TestOps
21. Переезд на собственную инфраструктуру Java

Python:
1. Вводное занятие. Сразу к практике!
2. Погружаемся в инструментарий и библиотеки
3. Git. GitHub. Погружаемся.
4. Основы Python
5. Selene #1
6. Основы Python. Часть II
7. Основы Python. Часть III
8. Page Object
9. Allure Reports
10. Работаем с файлами Python
11. Jenkins. Создаем первую задачу и управляем параметрами Python
12. Телеграм бот. Отправляем уведомления о результатах прохождения тестов
13. Pytest
14. Selenoid
15. Pytest. Часть II
16. Venv, Poetry и управление зависимостями проекта
17. REST API. Часть I. Пишем автотесты с Requests
18. REST API. Часть II. Продолжаем изучать
19. Мобильная автоматизация #1. Разрабатываем автотесты с Browserstack
20. Мобильная автоматизация #2. Разрабатываем автотесты с эмулятором Android устройства
21. Allure TestOps
22. Переезд на собственную инфраструктуру Python

Clone this wiki locally