我有以下 Dockerfile,它将构建 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 语句不正确 => 如何创建一个同时具有适用于 Selenium 的 Chrome 驱动程序和 Firefox 驱动程序的 Selenium 服务器容器。据我所知,selenium/standalone-firefox:3.4.0-chromium
图像仅适用于 Firefox。
最佳答案
像您建议的那样,Dockerfile 没有继承类型设置。
要实现组合构建,您需要找到 standalone-firefox
和 standalone-chrome
的共同 FROM
祖先,即 selenium/node-base
并创建您自己的 Docker 文件以重新应用 selenium/standalone-chrome
应用的所有构建步骤。然后每当 Selenium 更新其构建时保持同步。
Dockerfile 层次结构:
selenium/node-base
/ \
selenium/node-chrome selenium/node-firefox
| |
selenium/standalone-chrome selenium/standalone-firefox
问题是这些构建被设计为独立的,因此图像使用的变量和设置存在显着的重叠,您还需要在自定义构建中取消选择这些变量和设置来控制和运行 chrome 和 firefox同时。您可能最终不得不从头开始做所有事情。
Selenium 网格
运行个人Selenium grid节点位于grid hub后面是从单个端点进行多浏览器测试的标准方法。您可以运行Firefox , Chrome或Phantom JS Docker 中的节点或连接 standard nodes从其他地方。
穷人网格
如果设置网格对于针对每个浏览器运行一些测试的简单情况来说是一项繁重的工作,那么您始终可以在单独的端口上运行 Chrome 和 Firefox 的容器,并将相同的测试套件指向不同的端口。
关于selenium - 创建包含适用于 Selenium 的 Firefox 和 Chrome 驱动程序的 Dockerfile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47145325/