【问题标题】:Create Dockerfile that includes Firefox and Chrome drivers for Selenium创建包含用于 Selenium 的 Firefox 和 Chrome 驱动程序的 Dockerfile
【发布时间】:2018-04-19 02:39:25
【问题描述】:

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

【问题讨论】:

  • 也许 Selenium Hub 有适用于 Firefox 和 Chrome 的驱动程序? tjmaher.com/2016/07/setting-up-selenium-grid-with-chrome.htm‌​l
  • 你能定义你想要的问题吗?你为什么要建立一个单一的形象? Hub 是为多个浏览器呈现单个端点的常规方式。
  • @Matt 是的,听起来很像,在我提出这个问题后,我才意识到 Selenium Hub 的用途,如果你写一个解释这个的答案,我会投票,谢谢

标签: selenium docker selenium-chromedriver selenium-firefoxdriver


【解决方案1】:

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

要实现组合构建,您需要找到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同时。您可能最终不得不从头开始做所有事情。

硒网格

grid hub 后面运行单个Selenium grid 节点是从单个端点进行多浏览器测试的标准方法。您可以在 Docker 中运行 FirefoxChromePhantom JS 节点,或者从其他任何地方连接 standard nodes

可怜的芒格

如果在针对每个浏览器运行一些测试的简单情况下设置网格需要大量工作,您始终可以在单独的端口上运行 Chrome 和 Firefox 的容器,并将相同的测试套件指向不同的端口。

【讨论】:

  • 如果没有一些帮助,节点图像将无法作为独立图像工作。它们用于网格中。
  • @PaulHicks 您读到的哪一部分暗示了这一点?独立图像替换 node 图像上的入口点以开始工作。我试图用层次结构来说明这种设置。
  • Selenium Hub 能满足我的要求吗? tjmaher.com/2016/07/setting-up-selenium-grid-with-chrome.html
  • 是的,对不起@Matt。一旦你输入了 ascii 行,我就更好地理解了。我认为这是图像列表,而不是层次结构。
  • @PaulHicks 酷,谢谢。我缺乏 ascii 艺术技能。
【解决方案2】:

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

但是你不应该真的需要。那里有带有multiple browsers and drivers included 的图像。或者更好的是,您可以使用 hub imagesome driver 图像设置网格。

您甚至可以考虑使用诸如Serenity 之类的库或诸如Katalon 之类的产品,它们都可以为您完成所有工作。甚至还有一个 Katalon docker image 专为 CI 使用而设计:它只是命令行 + 无头,但这就是大多数 CI 驱动的回归测试所需的全部内容。

【讨论】:

  • Selenium Hub 能满足我的要求吗? tjmaher.com/2016/07/setting-up-selenium-grid-with-chrome.htm‌​l
  • Grid 允许您提供任意数量的浏览器,您喜欢的任何类型,可能分布在任意数量的机器上。然后您的客户端(测试代码)选择它想要运行的机器/浏览器类型,并要求集线器将所有 jotw 请求定向到正确的位置。因此,它不会让您的测试知道两个驱动程序(firefox 和 chrome),而是只知道一个(远程)并在连接到驱动程序时包含对 firefox 或 chrome 的请求。
猜你喜欢
  • 2018-04-19
  • 2021-04-11
  • 1970-01-01
  • 2017-03-03
  • 1970-01-01
  • 1970-01-01
  • 2017-12-07
  • 2021-04-11
  • 2017-03-10
相关资源
最近更新 更多