docker - 如何从远程 selenium 网格上的 docker 运行 testcafe

标签 docker docker-compose selenium-grid testcafe

我想使用 selenium grid docker 在远程计算机上安装的浏览器中运行 testcafe 测试图像(selenium/standalone-chrome-debug)。

我可以使用以下命令从本地计算机在远程浏览器中执行 testcafe 测试:

SELENIUM_SERVER=http://<remote machine IP>:4444/wd/hub testcafe selenium:chrome tests/

当我使用 VNC 连接到机器/docker 容器时,我可以看到测试正在执行并在浏览器中预览它们。一切都很完美。

问题是当我尝试使用 docker 从本地计算机执行测试而不是使用上面的命令时。这是我的docker-compose.yml文件:

 my-app:
    image: my-app:0.1
    ports:
      - "3000:3000"
 auit:
    build:
      context: .
      dockerfile: Dockerfile.auit.testcafe
    ports:
      - "1337:1337"
      - "1338:1338"
    shm_size: 2G
    environment:
    - SELENIUM_SERVER=http://<remote machine IP>:4444/wd/hub
    depends_on:
    - my-app
    entrypoint: ["/opt/testcafe/docker/testcafe-docker.sh", "selenium:chrome", "/tests"]

Dockerfile.auit.testcafe的内容:

FROM testcafe/testcafe
WORKDIR /
USER root
COPY ./tests /tests
RUN npm install testcafe-browser-provider-selenium

所以,当我运行时:

docker-compose up auit

浏览器在我的 selenium 网格中启动,但它试图连接到我的本地 docker 容器的 IP,而不是我的机器。我试图使用 --hostname参数来设置我的本地计算机的 IP,但我收到错误:

ERROR The specified "<my IP>" hostname cannot be resolved to the current machine.

如何解决这个问题?

最佳答案

Selenium 服务器可以通过主机名而不是 IP 访问您的本地计算机吗?如果是这样,请尝试以下方法。

extra_hosts 参数添加到 docker-compose.yml

auit:
   extra_hosts:
      - "my-hostname:127.0.0.1"

其中 my-hostname 是 Selenium 网格可见的本地计算机的主机名。

然后在TestCafe的--hostname parameter中指定这个主机名就像您对 IP 所做的那样。

但是,如果使用 IP 而不是主机名是唯一的选择,则需要付出更多努力来实现这一点(如果可能的话)。

关于docker - 如何从远程 selenium 网格上的 docker 运行 testcafe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53721363/

相关文章:

docker - 将Springboot webapp部署到Docker时Keycloak适配器无法验证 token

docker swarm 不会重新启动不健康的 Selenium 集线器容器

docker - .Net Core和Docker(管理应用程序设置)

java - 运行具有 200 个节点的 Selenium Grid 2。如何增加 Jetty 线程数?

selenium - 查找我的 selenium-grid 远程驱动程序在哪个节点上运行?

selenium - 如何获取selenium grid2中节点的空闲浏览器数量

在docker中生成csv的python脚本

docker - 在 Ubuntu 18.04 上安装 Docker?

用于多环境本地开发的 Docker

docker-compose - Clickhouse 客户端 - 代码:62。DB::Exception:空查询