selenium - 创建包含适用于 Selenium 的 Firefox 和 Chrome 驱动程序的 Dockerfile

标签 selenium docker selenium-chromedriver selenium-firefoxdriver

我有以下 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-firefoxstandalone-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 , ChromePhantom JS Docker 中的节点或连接 standard nodes从其他地方。

穷人网格

如果设置网格对于针对每个浏览器运行一些测试的简单情况来说是一项繁重的工作,那么您始终可以在单独的端口上运行 Chrome 和 Firefox 的容器,并将相同的测试套件指向不同的端口。

关于selenium - 创建包含适用于 Selenium 的 Firefox 和 Chrome 驱动程序的 Dockerfile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47145325/

相关文章:

docker - 开发在 Docker 容器中运行的 Golang 应用程序的最佳实践/方法

Python 3.4 Selenium 处理 chromedriver 异常

java - Chromedriver 78可能存在问题,Selenium找不到在Chrome中打开的PDF的Web元素

python - django.core.exceptions 在 python 中运行 selenium 功能测试时出现 ImproperlyConfigured 错误

java - Selenium - Maven/TestNG : How to add "testng.xml" and log4j2. pom.xml 中的 xml 路径,因此可执行的 .jar 文件也可以在其他计算机上执行?

docker - 我应该如何将应用程序配置放入我的 Docker 容器中?

python - 如何使用 selenium 单击 'checkout' 按钮?

python - 在Selenium中,如何使用python在弹出窗口上登录网站?

java - 为什么 webdriver 打开这么多驱动程序?

docker - 使用 ln 查看 docker 内已安装卷的协议(protocol)错误