Selenium 2023:
Помощь по node:
java -jar selenium-server-4.11.0.jar node --help java -jar selenium-server-4.11.0.jar node --config-help java -jar selenium-server-4.11.0.jar node --config-help > example.toml
- Запуск Selenium HUB:
java -jar selenium-server-4.10.0.jar hub
- Selenium HUB - http://localhost:4444 - Web-интерфейс Хаба
- Запуск первого узла (node) на порту по умолчанию - 5555
java -jar selenium-server-4.10.0.jar node --hub http://localhost:4444
- Запуск следующего узла (node)
java -jar selenium-server-4.10.0.jar node --hub http://localhost:4444 --port 5556
Об этом нигде чётко не пишут, подразумевая, вероятно, что это само собой разумеющееся, но вот
что нужно, для запуска тестов на Selenium Grid (через pytest):
- для параллельного запуска на Grid-е нужно установить пакет pytest-xdist (При запуске pytest нужно указать ключ -n и через пробел количество параллельных процессов, например: pytest -n 5)
- используемый браузер должен запускаться без окна, т.е. с параметром -headless (в Selenium 4 нужно использовать команду options.add_argument('-headless'), команда options.headless = True - устарела)
- параллельно через selenium hub можно запустить тесты только на одном виде браузера, т.к. в webdriver.Remote() пропипсывается окружение только для одного браузера/системы
Для установления дополнительных параметров браузеров используется команда:
options.set_capability("platformName", "Windows 7")
import pytest
from selenium import webdriver
from selenium.webdriver.chrome.options import Options as Options_Chrome
from selenium.webdriver.firefox.options import Options as Options_Firefox
from selenium.webdriver.edge.options import Options as Options_Edge
.....
# Selenium Hub
browser = None
match browser_name:
case "chrome" | "firefox" | "edge":
match browser_name:
case "chrome":
hub_options = Options_Chrome()
case "firefox":
hub_options = Options_Firefox()
case "edge":
hub_options = Options_Edge()
case _:
hub_options = Options_Chrome()
hub_options.add_argument('-headless')
browser = webdriver.Remote(command_executor=LinkData.SELENIUM,
options=hub_options)
.....
# SELENOID
chrome_options = webdriver.ChromeOptions()
chrome_options.set_capability("browserName", "chrome")
chrome_options.set_capability("browserVersion", "114")
chrome_options.set_capability("selenoid:options",
{"browserName": "chrome",
"browserVersion": "114",
"enableVNC": True, "enableLog": True,
"enableVideo": False,
"maxInstances": 4, "maxSession": 4})
browser = webdriver.Remote(command_executor=LinkData.SELENIUM,
options=chrome_options)
