【发布时间】:2021-08-26 06:52:24
【问题描述】:
我是使用 docker 的新手,所以尝试在其中运行我的 selenium 测试时遇到问题。 我知道我需要使用网格或独立运行 selenium 服务器并且它工作正常,但是我如何通过 docker (docker run mytest:1.0) 运行我的测试?我不断收到诸如“urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='localhost', port=4444): Max retries exceeded with url: /wd/hub/session”之类的错误,但如果我在本地运行我的测试机器 - 它工作正常。
Dockerfile:
FROM python:3.8
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
COPY . /tests
WORKDIR /tests
CMD [ "pytest", "-vv", "-s", "test_selenium.py" ]
Docker-compose.yaml:
version: "3"
services:
chrome:
image: selenium/node-chrome:4.0.0-rc-1-prerelease-20210823
shm_size: 2gb
depends_on:
- selenium-hub
environment:
- SE_EVENT_BUS_HOST=selenium-hub
- SE_EVENT_BUS_PUBLISH_PORT=4442
- SE_EVENT_BUS_SUBSCRIBE_PORT=4443
ports:
- "7900:7900"
selenium-hub:
image: selenium/hub:4.0.0-rc-1-prerelease-20210823
container_name: selenium-hub
ports:
- "4442:4442"
- "4443:4443"
- "4444:4444"
我在 test_file 中的驱动初始化:
driver = webdriver.Remote('http://localhost:4444/wd/hub', desired_capabilities=DesiredCapabilities.CHROME)
【问题讨论】:
-
那么您是否尝试从容器内部运行测试?
-
是的,完全正确。我已经为standalone-chrome 运行了容器,我想在其中运行我的测试
-
你可以试试这个 - gist.github.com/madhank93/… 吗?
-
仍然拒绝连接。我认为这是与端口有关的东西,但我还不够好,无法弄清楚
-
您可以将测试指向
http://selenium:4444/wd/hub。但无论如何,你得到了它的工作。
标签: python-3.x docker selenium docker-compose