Когда вы хотите запускать тесты параллельно на нескольких компьютерах? Selenium Grid может помочь вам в этом. Оригинал официального документа:
https://www.selenium.dev/documentation/grid/getting_started/
Selenium Grid позволяет выполнять сценарии WebDriver на удаленных компьютерах путем маршрутизации команд, отправленных клиентом, в удаленный экземпляр браузера.
Что может сделать Грид?
Заинтересованы? Используйте следующие разделы, чтобы узнать, как работает Grid и как настроить свой собственный Grid.
1. Необходимая среда:
--Selenium Manager true
,но Selenium Manager https://www.selenium.dev/documentation/selenium_manager/ автоматически настроит драйвер.2. Команда запуска
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
.
По умолчанию сервер обнаружит доступные драйверы по системному пути.
java -jar selenium-server-<version>.jar standalone
существовать Автономный Успешно запущен в режиме Grid Позже будет WebDriver контрольная точка http://localhost:4444
.
Общие сценарии для автономного режима включают в себя:
Шаблон Hub-Node является наиболее часто используемой ролью, поскольку он позволяет:
Хаб состоит из следующих компонентов: маршрутизатор, сервер распространения, карта сеансов, новая очередь сеансов и шина событий. Запустить хаб:
java -jar selenium-server-<version>.jar hub
По умолчанию сервер будет слушать RemoteWebDriverпросить `http://localhost:4444
Node Во время запуска узла узел обнаружит доступные драйверы по системному пути. Следующие команды предполагают, что узел Node работает на том же компьютере, что и Hub.
java -jar selenium-server-<version>.jar node
На одной машине может быть несколько узлов Узел 1
java -jar selenium-server-<version>.jar node --port 5555
Node 2
java -jar selenium-server-<version>.jar node --port 6666
Hub и узел Узел через HTTP иавтобус событий(автобус события, расположенные в Хабе) общаются друг с другом. Узел узла пропускает автобус события Отправьте сообщение в Хаб, чтобы начать процесс регистрации. Когда хаб получает сообщение, он связывается с узлом через HTTP, чтобы подтвердить его существование. Узел Нода успешно зарегистрирована на Хабе. Важно, чтобы на компьютере Хаба было открыто его существование. порт событий (по умолчанию 4442и4443). Это также относится к портам узла. С его помощью Хуби Узлы узла могут обмениваться данными. (Проще говоря, Node и Hub Разные машины могут пинговать друг друга Проходить)
Если концентратор использует порт по умолчанию,Так--Hub
Может использоваться для регистрации узлов Node.
java -jar selenium-server-<version>.jar node --hub http://<hub-ip>:4444
Когда концентратор не использует порт по умолчанию,Требуется событие --publish и флаг события --subscribe. Например,Если хаб использует порты 8886, 8887и8888
java -jar selenium-server-<version>.jar hub --publish-events tcp://<hub-ip>:8886 --subscribe-events tcp://<hub-ip>:8887 --port 8888
Узлы узла должны использовать эти порты для успешной регистрации.
java -jar selenium-server-<version>.jar node --publish-events tcp://<hub-ip>:8886 --subscribe-events tcp://<hub-ip>:8887
при использованиираспределенный Grid Когда каждый компонент запускается отдельно, лучше всего запускать его на разных машинах. Важно правильно открыть все порты, чтобы обеспечить бесперебойную связь между всеми компонентами.
Шина событий: обеспечивает внутреннюю связь между различными компонентами сети. Порт по умолчанию: 4442.、4443и5557。
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.
java -jar selenium-server-<version>.jar sessionqueue --port 5559
сопоставление сеансов:сессияIDсопоставлен с сеансомсуществоватьбегузел。по умолчаниюсопоставление сеансов Порт5556。сопоставление сеансовиавтобус событийвзаимодействие。
java -jar selenium-server-<version>.jar sessions --publish-events tcp://<event-bus-ip>:4442 --subscribe-events tcp://<event-bus-ip>:4443 --port 5556
Распределить сервер: запросить новый сеанс, просить его в новом сеансе и назначить его узлу, когда существующая функция соответствует. Узлы регистрируются на сервере распределения таким же образом, как они существуют в концентраторных регистрах сети концентратор/узл. Порт распространения по умолчанию — 5553. Распределение серверов с новыми сеансами, отображение сеансов, автобус узлы событий для взаимодействия.
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。маршрутизаториновая сессияочередь、сопоставление сеансовираспределениесерверруководитьвзаимодействие。
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.
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/.