创建包含 Firefox 和 Chrome Selenium 驱动程序的 Dockerfile

Create Dockerfile that includes Firefox and Chrome drivers for Selenium

我有以下将构建 Selenium 服务器的 Dockerfile

FROM selenium/standalone-firefox:3.4.0-chromium
FROM selenium/standalone-chrome

USER root
ENV NODE_ENV test

RUN mkdir -p /usr/local/cdt-tests/csv-data
COPY ./csv-data /usr/local/cdt-tests/csv-data
USER seluser

显然这两个 FROM 语句是不正确的 => 如何创建一个同时具有 Chrome 驱动程序和用于 Selenium 的 Firefox 驱动程序的 Selenium 服务器容器。据我所知,selenium/standalone-firefox:3.4.0-chromium 图片仅适用于 Firefox。

您不能像那样合并两个 docker 文件。您可以将其中一个用作 docker 文件的基础,然后将重要的部分从另一个复制到您的文件中。

但是你不应该真的需要。那里有 multiple browsers and drivers included. Or better, you could set up a grid with the hub image and some driver 张图片。

您甚至可以考虑像 Serenity or a product such as Katalon, both of which do it all for you. There is even a Katalon docker image 这样专为 CI 使用而设计的库:它只是命令行 + 无头,但这就是您的大部分 CI 所需要的驱动的回归测试。

没有像您建议的那样为 Docker 文件设置继承类型。

要实现组合构建,您需要找到 standalone-firefoxstandalone-chrome 的共同 FROM 祖先,即 selenium/node-base 并创建您自己的 Docker 文件重新应用 selenium/standalone-chrome 适用的所有构建步骤。然后在 Selenium 更新其构建时保持同步。

Docker文件层次结构:

                selenium/node-base
                /               \
selenium/node-chrome          selenium/node-firefox
               |                 |
selenium/standalone-chrome    selenium/standalone-firefox

问题是这些构建被设计成独立的,因此图像使用的变量和设置有很大的重叠,您还需要在自定义构建中取消选择以控制和 运行同时 chrome 和 firefox。您可能最终不得不从头开始做所有事情。

硒网格

运行 个人 Selenium grid node's behind a grid hub is the standard way to do multi browser testing from a single endpoint. You can run Firefox, Chrome or Phantom JS nodes in Docker or connect standard nodes 来自其他任何地方。

穷人格子

你总是可以 运行 Chrome 和 Firefox 的容器在不同的端口上,如果设置网格对于简单的情况来说工作量很大,则将相同的测试套件指向不同的端口运行针对每个浏览器进行一些测试。