如何在具有可见浏览器的docker容器中运行Selenium测试?

如何在具有可见浏览器的docker容器中运行Selenium测试?,docker,selenium,selenium-webdriver,docker-compose,dockerfile,os,Docker,Selenium,Selenium Webdriver,Docker Compose,Dockerfile,Os,如果我想在带有可见(而非无头)浏览器的Docker容器中运行Selenium测试,我的选项是什么 我是否需要使用远程显示查看器(如VNC) 是否可以在主机上使用浏览器?(即不在Docker容器中的浏览器)。这是怎么回事 还有其他选择吗 请考虑使用 ZaleNe()。Zalenium的标题是-一个灵活且可扩展的基于容器的Selenium网格,具有视频录制、实时预览、基本身份验证和仪表板 如上所述,您可以检查浏览器上运行的测试用例的实时预览 附言:-Zalenium是一种构建在硒网格顶部的包装材

如果我想在带有可见(而非无头)浏览器的Docker容器中运行Selenium测试,我的选项是什么

  • 我是否需要使用远程显示查看器(如VNC)
  • 是否可以在主机上使用浏览器?(即不在Docker容器中的浏览器)。这是怎么回事
  • 还有其他选择吗

请考虑使用<强> ZaleNe<:强>()。Zalenium的标题是-一个灵活且可扩展的基于容器的Selenium网格,具有视频录制、实时预览、基本身份验证和仪表板

如上所述,您可以检查浏览器上运行的测试用例的实时预览

附言:-Zalenium是一种构建在硒网格顶部的包装材料

Docker 是一个软件集装箱船平台,可从提供虚拟化。在Docker中,所有软件部件都组织为容器,其中包括操作系统、软件、依赖项、环境变量等。容器可在不同用户之间共享,从而实现软件和服务的快速安装和运行,从而使Docker对自动化测试更为友好,因为相关容器可以作为自动化测试的一部分下载和运行。Docker也是安全的,因为它在主机上作为一个独立进程运行

需要注意的是,Docker是隔离的、安全的和便携的。但是,没有GUI,也不能以裸机速度运行


先决条件
  • Python,与Selenium WebDriver绑定
  • 测试框架,例如PyTest、Nose或JUnit
  • 变色河、壁虎河
  • 码头工人(从现场)
  • CI工具,例如,或
  • 可选插件,例如用于存储库连接的GitHub、用于报告或性能测试的诱惑等

回答您的问题:

  • 我是否需要使用远程显示查看器,如VNC?:根据文章Docker可以在Linux主机上本机运行,而在Mac OS和Windows系统上提供虚拟化服务需要一个小型Linux VM。在非Linux系统上,单个Docker容器由迷你VM、Docker软件层和软件容器组成。但最近,Windows和Mac操作系统增加了对操作系统级虚拟化的支持。适用于Windows和Mac操作系统的Docker测试版现已推出,允许Docker以本机方式运行

  • 可以在主机上使用浏览器吗?:不可以,因为没有UI。但是,为了直观地查看测试执行情况,您可以安装
    X服务器显示器

    这样,您可以看到结果:

要以可视化方式查看结果,您可以使用诱惑报告,该报告如下所示:

  • 还有其他选择吗?:还有几个其他的选择。
    • 您可以使用Docker Compose设置一个。广泛应用于该领域,因为它提供了一个灵活且可扩展的基于容器的Selenium网格,具有视频录制、实时预览、基本身份验证和仪表板
    • 您也可以在Kubernetes设置。您可以在中找到详细的文档

奥特罗

我的结论是,实现这一点的标准方法是在Docker容器上使用轻量级桌面环境(如LXDE)运行X。然后,您可以使用VNC客户端连接到它。无法在主机上使用浏览器

有关其他选项,请参见其他答案

  • 您可以这样做:
  • Google Chrome开发者工具(或DevTools)前端实现为HTML+CSS+JavaScript web应用程序。它使用序列化消息通道与被检查的页面通信。最初,我们致力于建立这个序列化的异步交互,以便将DevTools前端带出检查过的页面流程。但一旦完成,我们就可以更进一步,在浏览器之外运行DevTools前端。以下是您可以尝试的方法: 使用远程调试命令行开关运行要远程调试的Chrome实例:Chrome.exe--远程调试端口=9222--用户数据目录=远程配置文件。必须为远程会话使用不同的Chrome实例,这就是为什么我们使用--user data dir参数运行它。 导航到要调试的页面。 现在运行一个常规(客户端)Chrome实例并导航到http://localhost:9222 那里 您将看到许多链接,这些链接将带您访问相应页面的远程调试会话。点击它们,享受在线调试Chrome页面的乐趣

    这意味着你只需在调试端口打开的情况下启动一个无头chrome,然后你就可以从另一个chrome浏览器连接到该无头chrome

    这是一种欺骗,因为您只是将主机浏览器连接到docker机器中的无头浏览器,但效果相同

  • 有关如何使用rails应用程序执行此操作的不同示例,请参阅本文:
  • 可以使用任意语言/框架重新创建这些步骤

    但这实际上允许你的dockerized应用程序控制你的主机浏览器。

    你可以选择或Zalenium,如回答中所述。我们使用的是硒(50多个容器)。它的服务很好。如果你打算使用Selenium Grid 4,那么使用