-
Notifications
You must be signed in to change notification settings - Fork 89
13. Selenoid
Если описать максимально просто, 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
можно увидеть все образы, которые установлены на вашем компьютере. Которые можно запустить в контейнере. Или при необходимости удалить.
✔️ Сайт
✔️ Чат в Telegram
✔️ Канал в Telegarm
Содержание
Командная строка
Кодировка 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