Я работаю над внедрением сетки селена docker в моем проекте. Я сталкиваюсь с проблемой при подключении с помощью определенного пользователем узла- chrome docker контейнеров узла с обновленной версией браузера. Ниже приведена подробная информация.
Среда: Windows 10 базовая машина Виртуальная машина Ubuntu 18.04 / 16.04.
Проект: Python Pytest Selenium
Тестовые примеры работают нормально при работе с селеном / концентратор: 3.11.0-диспрозий и селен / узел- chrome: 3.11.0-диспрозий. Образ был создан с помощью selenium-server-standalone-3.11.0.jar и chrome версии 66, которые загружаются из https://hub.docker.com/
Затем создается пользовательский docker изображение на основе selenium-server-standalone-3.11.0.jar и с последней версией chrome / chormedriver, т. е. 81.
Шаги для создания docker image:
Пожалуйста, обратитесь https://github.com/SeleniumHQ/docker-selenium/wiki/Building-your-own-images
• git clone https://github.com/SeleniumHQ/docker-selenium.git
• cd docker-selenium
• git checkout tags/3.11.0-dysprosium
• make generate_all
• sudo docker build -t selenium/node-chrome:1.2 --build-arg CHROME_DRIVER_VERSION=81.0.4044.69 --build-arg CHROME_VERSION=google-chrome-stable=81.0.4044.92-1 NodeChrome
После создания образа я использую этот локальный образ в docker -компонентном файле.
Концентратор и узел успешно запущен, сеанс chrome также создан, но тест python + pytest зависает.
[1586871890.350][SEVERE]: bind() failed: Cannot assign requested address (99) [Based on the googling, actually this error should not be a stopper to test run, but mentioning it here]
“13:44:50.256 INFO [ActiveSessionFactory.lambda$apply$11] - Matched factory org.openqa.selenium.remote.server.ServicedSession$Factory (provider: org.openqa.selenium.chrome.ChromeDriverService)
Starting ChromeDriver 81.0.4044.69 (6813546031a4bc83f717a2ef7cd4ac6ec1199132-refs/branch-heads/4044@{#776}) on port 17653
Only local connections are allowed.
Please protect ports used by ChromeDriver and related test frameworks to prevent access by malicious code.
[1586871890.350][SEVERE]: bind() failed: Cannot assign requested address (99)
13:44:50.850 INFO [ProtocolHandshake.createSession] - Detected dialect: W3C
13:44:50.927 INFO [RemoteSession$Factory.lambda$performHandshake$0] - Started new session 98b823ca35a6d3cc17e666b7911551c4 (org.openqa.selenium.chrome.ChromeDriverService)”
Тот же тестовый проход при запуске через автономный серверный узел и концентратор (без docker) и тест выполнялся на chrome версии браузера 80+. Обратите внимание, что код проекта еще не обновлен для работы с более высокой версией на selenium-server-standalone.
Docker -compose.yml
services:
selenium-hub:
image: selenium/hub:3.11.0-dysprosium
container_name: selenium-hub
ports:
- "4444:4444"
environment:
- GRID_DEBUG=true
chrome:
image: selenium/node-chrome:1.2
depends_on:
- selenium-hub
ports:
- 9901:9500
- 5555:5555
expose:
- "9515"
- "5555"
environment:
- GRID_DEBUG=true
- HUB_HOST=selenium-hub
- HUB_PORT=4444
- NODE_BROWSER_NAME=chrome
- NODE_SELENIUM_PROTOCOL=WebDriver
- DBUS_SESSION_BUS_ADDRESS=/dev/null
- NODE_MAX_INSTANCES=2
- NODE_MAX_SESSION=2
- VNC_NO_PASSWORD=1
volumes:
- /dev/shm:/dev/shm
links:
- selenium-hub
privileged: true