如何从Docker在远程硒网格上运行testcafe

时间:2018-12-11 09:47:29

标签: docker docker-compose selenium-grid testcafe

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

我可以使用以下命令从本地计算机在此远程浏览器中执行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

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

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

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:5)

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

extra_hosts参数添加到docker-compose.yml

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

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

然后像使用IP一样在TestCafe的--hostname参数中指定此主机名。

但是,如果仅使用IP代替主机名,则将需要更多的精力来实现(如果可能的话)。