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

我有以下Dockerfile将build立一个Selenium服务器

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语句不正确 =>我如何创build一个Selenium服务器容器同时具有Chrome驱动程序和Firefox驱动程序。 据我所知, selenium/standalone-firefox:3.4.0-chromium图像只适用于Firefox。

Dockerfiles没有像您所build议的那样inheritancetypes设置。

要实现一个组合的构build,你需要findstandalone-firefoxstandalone-chromeselenium/node-base的共同FROM祖先,并且创build你自己的Docker文件来重新应用所有的selenium/standalone-chrome应用的构build步骤。 然后当Selenium更新他们的版本时保持同步。

Dockerfile层次结构:

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

问题是这些版本被devise为单独的,所以在图像使用的variables和设置中存在显着的重叠,您还需要在自定义版本中取消以同时控制和运行chrome和firefox。 你可能最终不得不从头开始做所有事情。

selenium网格

在网格中心之后运行单独的Selenium网格节点是从单个端点执行多浏览器testing的标准方式。 您可以在Docker中运行Firefox , Chrome或Phantom JS节点,或从其他任何地方连接标准节点 。

可怜的人格

您可以随时在单独的端口上运行Chrome和Firefox的容器,并在同一个端口上指定相同的testing套件,如果设置一个Grid对于针对每个浏览器运行一些testing的简单情况是很多工作的。

你不能合并两个docker文件。 您可以使用一个作为您的docker文件的基础,然后将其他重要的位复制到您的。

但是,你不应该真的需要。 有图像在那里与多个浏览器和驱动程序包括在内 。 或者更好的,你可以设置一个网格与中心图像和一些 驱动程序的图像。

你甚至可以考虑一个像Serenity这样的图书馆,或者像Katalon这样的产品,它们都是为你做的。 甚至还有一个devise用于CI的Katalon docker镜像 :它只是命令行+无头的,但这就是大部分CI驱动的回归testing所需要的。