работает python selenium в docker-compose - PullRequest
0 голосов
/ 25 января 2019

Я пытаюсь запустить python selenium в docker-compose.У меня есть следующие файлы:

docker-compose.yml:

version: '3'

services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    depends_on:
      - chrome
    ports:
      - '8443:8443'

  chrome:
    image: selenium/node-chrome:3.14.0-gallium
    volumes:
      - /dev/shm:/dev/shm
    depends_on:
      - hub
    environment:
      HUB_HOST: hub

  hub:
    image: selenium/hub:3.14.0-gallium
    ports:
      - "4444:4444"

Dockerfile:

FROM    python:latest
COPY    test.py /code/test.py
WORKDIR /code
RUN     pip install --upgrade pip
RUN     pip install pytest
RUN     pip install pytest-asyncio
RUN     pip install selenium

test.py:

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

driver = webdriver.Remote(
        command_executor='http://hub:4444/wd/hub',
        desired_capabilities=DesiredCapabilities.CHROME,
        )

print(driver)

Я запускаю:

docker-compose build
docker-compose run python test.py

При попытке создать веб-драйвер я получаю сообщение об ошибке отказа в соединении в test.py.

'NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7ffb3b34d550>: Failed to establish a new connection: [Errno 111] Connection refused')'

Просмотр журналов, концентратора иДрайвер Chrome, кажется, работает и работает, а драйвер Chrome подключен к концентратору.Я могу пинговать хаб и хромированные контейнеры из приложения.Есть идеи?

Ответы [ 2 ]

0 голосов
/ 25 января 2019

Вот рабочая версия: Также убедитесь, что перед тем, как приступить к тестированию, дождитесь готовности ссылки на концентратор: https://github.com/SeleniumHQ/docker-selenium#waiting-for-the-grid-to-be-ready

version: "3.6"
services:
  selenium-hub:
    restart: always
    image: selenium/hub:3.14.0
    container_name: selenium-hub
    ports:
      - "4444:4444"

 chrome:
    restart: always
    image: selenium/node-chrome-debug:3.14.0
    ports:
      - "5900-5999:5900"
    depends_on:
      - selenium-hub
    environment:
      HUB_HOST: selenium-hub
      HUB_PORT_4444_TCP_ADDR: selenium-hub
      HUB_PORT_4444_TCP_PORT: 4444
      DBUS_SESSION_BUS_ADDRESS: "/dev/null"
    links:
      - selenium-hub:hub
0 голосов
/ 25 января 2019

У меня очень похожая настройка, и единственное отличие, которое я вижу, в том, что вы не указали аргумент HUB_PORT для экземпляра chrome:

environment:
    HUB_HOST: hub
    HUB_PORT: 4444

Пример, который я использовал для настройки, приведен здесь: SeleniumHQ / докер-селен

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...