И снова здравствуйте. Перевели для вас полезную заметку в преддверии старта курса «Java QA Engineer».
Каждый год инженеры по автоматизации тестирования со всего мира исследуют новейшие инструменты и методы, чтобы сделать свою среду автоматизации тестирования более стабильной, быстрой и простой в использовании и обслуживании. Это жизненно важно для обеспечения постоянного широкомасштабного внедрения их фреймворков в их компании. Так или иначе, раздутые устаревшие фреймворки быстро выходят из моды.
Selenium Grid, как известно, сложен в настройке, нестабилен и сложен в развертывании и/или управлении версиями на CI конвейере. Более простой, стабильный и удобный способ — использовать предварительно созданные образы Selenium Docker.
Чтобы приступить к работе, вам необходимо сначала установить Docker и Docker Compose на вашем компьютере. Если вы используете Windows 10 или Mac, они оба будут установлены с помощью Docker Desktop.
Официальный репозиторий Selenium на Docker Hub содержит предварительно созданные образы Docker для ваших нодов (узлов) Selenium Hub, Firefox и Chrome.
Самый простой способ использовать их в локальном Selenium Grid — создать файл Docker Compose в корневом каталоге вашего проекта. Назовите файл просто
Я включил пример ниже, который создает следующий Grid:
Файл Docker Compose описывает настройку вашего Grid. Дополнительные сведения о создании файлов Docker Compose см. в официальной документации.
Чтобы запустить свой Grid, просто используйте любой терминал (
Вы можете подключиться к своему Selenium Grid точно в так же, как обычно, поскольку Hub прослушивает порт 4444 вашей локальной машины. Вот пример, в котором мы настроили наш Driver для использования нашего Chrome Node.
Затем вы можете использовать библиотеку TestNG, чтобы запускать тесты на нескольких нодах параллельно, как обычно.
Стоит отметить, что на каждом ноде можно запустить несколько браузеров. Однако это не рекомендуется, и использование одного браузера на каждом ноде считается лучшей практикой для достижения оптимальной производительности.
Если вы хотите увидеть, что происходит в браузере, в целях отладки своих тестов, то стоит иметь
Также возможно запускать headlessly-браузеры для увеличения скорости (обычный способ), и Selenium также предоставляет
Чтобы создать стабильную версию Grid для вашего CI конвейера, также можно развернуть ваш Grid на Kubernetes или Swarm. Это гарантирует быстрое восстановление или замену докеров в случае их выхода из строя.
Каждый год инженеры по автоматизации тестирования со всего мира исследуют новейшие инструменты и методы, чтобы сделать свою среду автоматизации тестирования более стабильной, быстрой и простой в использовании и обслуживании. Это жизненно важно для обеспечения постоянного широкомасштабного внедрения их фреймворков в их компании. Так или иначе, раздутые устаревшие фреймворки быстро выходят из моды.
Selenium Grid, как известно, сложен в настройке, нестабилен и сложен в развертывании и/или управлении версиями на CI конвейере. Более простой, стабильный и удобный способ — использовать предварительно созданные образы Selenium Docker.
Примечание: Единственным недостатком этого метода является то, что не поддерживается IE (Internet Explorer), так как операционную систему Windows на данный момент невозможно поместить в контейнер.
Подготовка к работе
Чтобы приступить к работе, вам необходимо сначала установить Docker и Docker Compose на вашем компьютере. Если вы используете Windows 10 или Mac, они оба будут установлены с помощью Docker Desktop.
Запуск вашего Grid
Официальный репозиторий Selenium на Docker Hub содержит предварительно созданные образы Docker для ваших нодов (узлов) Selenium Hub, Firefox и Chrome.
Самый простой способ использовать их в локальном Selenium Grid — создать файл Docker Compose в корневом каталоге вашего проекта. Назовите файл просто
docker-compose.yml
.Я включил пример ниже, который создает следующий Grid:
- Один Selenium Hub
- Один нод Chrome
- Один нод Firefox
#docker-compose.yml
version: "3"
services:
selenium-hub:
image: selenium/hub:3.141.59-neon
container_name: selenium-hub
ports:
- "4444:4444"
chrome:
image: selenium/node-chrome:3.141.59-neon
volumes:
- /dev/shm:/dev/shm
depends_on:
- selenium-hub
environment:
- HUB_HOST=selenium-hub
- HUB_PORT=4444
firefox:
image: selenium/node-firefox:3.141.59-neon
volumes:
- /dev/shm:/dev/shm
depends_on:
- selenium-hub
environment:
- HUB_HOST=selenium-hub
- HUB_PORT=4444
Файл Docker Compose описывает настройку вашего Grid. Дополнительные сведения о создании файлов Docker Compose см. в официальной документации.
Чтобы запустить свой Grid, просто используйте любой терминал (
PowerShell
или cmd
в Windows), в котором выполните следующую команду из корневого каталога вашего проекта:docker-compose up
Подключение к Grid
Вы можете подключиться к своему Selenium Grid точно в так же, как обычно, поскольку Hub прослушивает порт 4444 вашей локальной машины. Вот пример, в котором мы настроили наш Driver для использования нашего Chrome Node.
// Driver.java
protected static RemoteWebDriver browser;
DesiredCapabilities cap = new DesiredCapabilities();
ChromeOptions chromeOptions = new ChromeOptions();
cap.setCapability(ChromeOptions.CAPABILITY, chromeOptions);
cap.setBrowserName("chrome");
driver = new RemoteWebDriver(cap);
Затем вы можете использовать библиотеку TestNG, чтобы запускать тесты на нескольких нодах параллельно, как обычно.
Стоит отметить, что на каждом ноде можно запустить несколько браузеров. Однако это не рекомендуется, и использование одного браузера на каждом ноде считается лучшей практикой для достижения оптимальной производительности.
Дополнительные советы и хитрости
Если вы хотите увидеть, что происходит в браузере, в целях отладки своих тестов, то стоит иметь
debug
версию вашего docker-compose.yml
файла, который загружает debug
браузерные ноды. Они содержат сервер VNC, поэтому вы можете наблюдать за браузером во время выполнения теста.Также возможно запускать headlessly-браузеры для увеличения скорости (обычный способ), и Selenium также предоставляет
base
версии образов, так что вы можете создавать свои собственные образы, если вам нужно установить дополнительное программное обеспечение.Чтобы создать стабильную версию Grid для вашего CI конвейера, также можно развернуть ваш Grid на Kubernetes или Swarm. Это гарантирует быстрое восстановление или замену докеров в случае их выхода из строя.
Читать ещё:
- Как устроен Selenium: Эпизоды 1 — 2
- Как устроен Selenium: Эпизоды 3 — 5