Selenium Grid4.0 — параллельная работа на нескольких компьютерах
Selenium Grid4.0 — параллельная работа на нескольких компьютерах

Предисловие

Когда вы хотите запускать тесты параллельно на нескольких компьютерах? Selenium Grid может помочь вам в этом. Оригинал официального документа:

https://www.selenium.dev/documentation/grid/getting_started/

Selenium Grid позволяет выполнять сценарии WebDriver на удаленных компьютерах путем маршрутизации команд, отправленных клиентом, в удаленный экземпляр браузера.

Что может сделать Грид?

  • 1. Предоставьте простой способ параллельного существования на нескольких машинах.
  • 2. Разрешить выполнение теста существования в разных версиях браузера.
  • 3. Включите кроссплатформенный тест.

Заинтересованы? Используйте следующие разделы, чтобы узнать, как работает Grid и как настроить свой собственный Grid.

быстрый старт

1. Необходимая среда:

  • Java 11 или выше
  • Браузер Google Chrome или другая установка браузера
  • Добавьте соответствующий драйвер браузера (например, chromedriver) в переменную среды.,Если добавлено--Selenium Manager true,но Selenium Manager https://www.selenium.dev/documentation/selenium_manager/ автоматически настроит драйвер.

2. Команда запуска

Язык кода:javascript
копировать
java -jar selenium-server-<version>.jar standalone

3. Вставьте контрольную информацию WebDriver. точкаhttp://localhost:4444 4.проходитьсуществовать Откройте браузер, чтобы проверитьсуществоватьбегтести Доступные функцииhttp://localhost:4444

Роль сетки

Grid Состоящий из шести различных компонентов, он дает вам возможность развертывать его по-разному. В зависимости от ваших потребностей вы можете запускать каждый из них индивидуально (распределенно), группировать их существующий Hub & Node или объединить их на одной машине (автономно)

Автономный режим

Standalone все будут Grid Компоненты плавно объединяются в один компонент. Автономный Запустив Grid в режиме, вы можете создать полнофункциональную Grid, используя одну команду в одном процессе. Автономный Может быть запущен только на одной машине.

Автономный режим тоже запускается Selenium Самый простой режим сетки. По умолчанию сервер будет прослушивать RemoteWebDriver просить http://localhost:4444. По умолчанию сервер обнаружит доступные драйверы по системному пути.

Язык кода:javascript
копировать
java -jar selenium-server-<version>.jar standalone

существовать Автономный Успешно запущен в режиме Grid Позже будет WebDriver контрольная точка http://localhost:4444.

Общие сценарии для автономного режима включают в себя:

  • Разрабатывайте или отлаживайте локально с помощью RemoteWebDriverсуществоватьтест.
  • существования Запустите набор быстрых тестов перед отправкой кода
  • существоватьCI/CDЛегко настроить в инструменте Grid(GitHub Действия, Дженкинс и т. д.)

Шаблон Hub-Node

Шаблон Hub-Node является наиболее часто используемой ролью, поскольку он позволяет:

  • Объедините разные машины в одну Grid Например, машины с разными операционными системами и/или версиями браузера.
  • Имеет единую точку входа для запуска теста WebDriver в разных средах.
  • существуют Увеличение или уменьшение мощности без разрушения сети

Хаб состоит из следующих компонентов: маршрутизатор, сервер распространения, карта сеансов, новая очередь сеансов и шина событий. Запустить хаб:

Язык кода:javascript
копировать
java -jar selenium-server-<version>.jar hub

По умолчанию сервер будет слушать RemoteWebDriverпросить `http://localhost:4444

Node Во время запуска узла узел обнаружит доступные драйверы по системному пути. Следующие команды предполагают, что узел Node работает на том же компьютере, что и Hub.

Язык кода:javascript
копировать
java -jar selenium-server-<version>.jar node

На одной машине может быть несколько узлов Узел 1

Язык кода:javascript
копировать
java -jar selenium-server-<version>.jar node --port 5555

Node 2

Язык кода:javascript
копировать
java -jar selenium-server-<version>.jar node --port 6666

Node и Hub находятся на разных машинах.

Hub и узел Узел через HTTP иавтобус событий(автобус события, расположенные в Хабе) общаются друг с другом. Узел узла пропускает автобус события Отправьте сообщение в Хаб, чтобы начать процесс регистрации. Когда хаб получает сообщение, он связывается с узлом через HTTP, чтобы подтвердить его существование. Узел Нода успешно зарегистрирована на Хабе. Важно, чтобы на компьютере Хаба было открыто его существование. порт событий (по умолчанию 4442и4443). Это также относится к портам узла. С его помощью Хуби Узлы узла могут обмениваться данными. (Проще говоря, Node и Hub Разные машины могут пинговать друг друга Проходить)

Если концентратор использует порт по умолчанию,Так--Hub Может использоваться для регистрации узлов Node.

Язык кода:javascript
копировать
java -jar selenium-server-<version>.jar node --hub http://<hub-ip>:4444

Когда концентратор не использует порт по умолчанию,Требуется событие --publish и флаг события --subscribe. Например,Если хаб использует порты 8886, 8887и8888

Язык кода:javascript
копировать
java -jar selenium-server-<version>.jar hub --publish-events tcp://<hub-ip>:8886 --subscribe-events tcp://<hub-ip>:8887 --port 8888

Узлы узла должны использовать эти порты для успешной регистрации.

Язык кода:javascript
копировать
java -jar selenium-server-<version>.jar node --publish-events tcp://<hub-ip>:8886 --subscribe-events tcp://<hub-ip>:8887

распределенный

при использованиираспределенный Grid Когда каждый компонент запускается отдельно, лучше всего запускать его на разных машинах. Важно правильно открыть все порты, чтобы обеспечить бесперебойную связь между всеми компонентами.

Шина событий: обеспечивает внутреннюю связь между различными компонентами сети. Порт по умолчанию: 4442.、4443и5557。

Язык кода:javascript
копировать
java -jar selenium-server-<version>.jar event-bus --publish-events tcp://<event-bus-ip>:4442 --subscribe-events tcp://<event-bus-ip>:4443 --port 5557

Новая очередь сеанса: добавьте новую сессию, чтобы просить очередь, и сервер распространения выполнит запрос к этой очереди. Порт по умолчанию — 5559.

Язык кода:javascript
копировать
java -jar selenium-server-<version>.jar sessionqueue --port 5559

сопоставление сеансов:сессияIDсопоставлен с сеансомсуществоватьбегузел。по умолчаниюсопоставление сеансов Порт5556。сопоставление сеансовиавтобус событийвзаимодействие。

Язык кода:javascript
копировать
java -jar selenium-server-<version>.jar sessions --publish-events tcp://<event-bus-ip>:4442 --subscribe-events tcp://<event-bus-ip>:4443 --port 5556

Распределить сервер: запросить новый сеанс, просить его в новом сеансе и назначить его узлу, когда существующая функция соответствует. Узлы регистрируются на сервере распределения таким же образом, как они существуют в концентраторных регистрах сети концентратор/узл. Порт распространения по умолчанию — 5553. Распределение серверов с новыми сеансами, отображение сеансов, автобус узлы событий для взаимодействия.

Язык кода:javascript
копировать
java -jar selenium-server-<version>.jar distributor --publish-events tcp://<event-bus-ip>:4442 --subscribe-events tcp://<event-bus-ip>:4443 --sessions http://<sessions-ip>:5556 --sessionqueue http://<new-session-queue-ip>:5559 --port 5553 --bind-bus false

Маршрутизатор: перенаправляет новые сеансы просить в очередь и перенаправляет существующие сеансы просить на узел, на котором выполняется сеанс. по умолчаниюмаршрутизатор Порт4444。маршрутизаториновая сессияочередь、сопоставление сеансовираспределениесерверруководитьвзаимодействие。

Язык кода:javascript
копировать
java -jar selenium-server-<version>.jar router --sessions http://<sessions-ip>:5556 --distributor http://<distributor-ip>:5553 --sessionqueue http://<new-session-queue-ip>:5559 --port 4444

Порт узла по умолчанию — 5555.

Язык кода:javascript
копировать
java -jar selenium-server-<version>.jar node --publish-events tcp://<event-bus-ip>:4442 --subscribe-events tcp://<event-bus-ip>:4443

Оригинал официального документа: https://www.selenium.dev/documentation/grid/getting_started/.

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose