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)