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
Углубленный анализ переполнения памяти CUDA: OutOfMemoryError: CUDA не хватает памяти. Попыталась выделить 3,21 Ги Б (GPU 0; всего 8,00 Ги Б).
boy illustration
[Решено] ошибка установки conda. Среда решения: не удалось выполнить первоначальное зависание. Повторная попытка с помощью файла (графическое руководство).
boy illustration
Прочитайте нейросетевую модель Трансформера в одной статье
boy illustration
.ART Теплые зимние предложения уже открыты
boy illustration
Сравнительная таблица описания кодов ошибок Amap
boy illustration
Уведомление о последних правилах Points Mall в декабре 2022 года.
boy illustration
Даже новички могут быстро приступить к работе с легким сервером приложений.
boy illustration
Взгляд на RSAC 2024|Защита конфиденциальности в эпоху больших моделей
boy illustration
Вы используете ИИ каждый день и до сих пор не знаете, как ИИ дает обратную связь? Одна статья для понимания реализации в коде Python общих функций потерь генеративных моделей + анализ принципов расчета.
boy illustration
Используйте (внутренний) почтовый ящик для образовательных учреждений, чтобы использовать Microsoft Family Bucket (1T дискового пространства на одном диске и версию Office 365 для образовательных учреждений)
boy illustration
Руководство по началу работы с оперативным проектом (7) Практическое сочетание оперативного письма — оперативного письма на основе интеллектуальной системы вопросов и ответов службы поддержки клиентов
boy illustration
[docker] Версия сервера «Чтение 3» — создайте свою собственную программу чтения веб-текста
boy illustration
Обзор Cloud-init и этапы создания в рамках PVE
boy illustration
Корпоративные пользователи используют пакет регистрационных ресурсов для регистрации ICP для веб-сайта и активации оплаты WeChat H5 (с кодом платежного узла версии API V3)
boy illustration
Подробное объяснение таких показателей производительности с высоким уровнем параллелизма, как QPS, TPS, RT и пропускная способность.
boy illustration
Удачи в конкурсе Python Essay Challenge, станьте первым, кто испытает новую функцию сообщества [Запускать блоки кода онлайн] и выиграйте множество изысканных подарков!
boy illustration
[Техническая посадка травы] Кровавая рвота и отделка позволяют вам необычным образом ощипывать гусиные перья! Не распространяйте информацию! ! !
boy illustration
[Официальное ограниченное по времени мероприятие] Сейчас ноябрь, напишите и получите приз
boy illustration
Прочтите это в одной статье: Учебник для няни по созданию сервера Huanshou Parlu на базе CVM-сервера.
boy illustration
Cloud Native | Что такое CRD (настраиваемые определения ресурсов) в K8s?
boy illustration
Как использовать Cloudflare CDN для настройки узла (CF самостоятельно выбирает IP) Гонконг, Китай/Азия узел/сводка и рекомендации внутреннего высокоскоростного IP-сегмента
boy illustration
Дополнительные правила вознаграждения амбассадоров акции в марте 2023 г.
boy illustration
Можно ли открыть частный сервер Phantom Beast Palu одним щелчком мыши? Супер простой урок для начинающих! (Прилагается метод обновления сервера)
boy illustration
[Играйте с Phantom Beast Palu] Обновите игровой сервер Phantom Beast Pallu одним щелчком мыши
boy illustration
Maotouhu делится: последний доступный внутри страны адрес склада исходного образа Docker 2024 года (обновлено 1 декабря)
boy illustration
Кодирование Base64 в MultipartFile
boy illustration
5 точек расширения SpringBoot, супер практично!
boy illustration
Глубокое понимание сопоставления индексов Elasticsearch.
boy illustration
15 рекомендуемых платформ разработки с нулевым кодом корпоративного уровня. Всегда найдется та, которая вам понравится.
boy illustration
Аннотация EasyExcel позволяет экспортировать с сохранением двух десятичных знаков.