测试动态 / 质量专栏 / 如何在Docker中运行Selenium测试?
如何在Docker中运行Selenium测试?
2021-07-15 浏览次数:3871

一、Docke概述

1.Docker简介:

Docker是 dotCloud公司于2013年初发明的一个开源的容器化平台,用Go语言编写,该项目开源以后,项目代码在 GitHub 上进行维护。Docker有助于帮助程序开发人员以安全的方式创建、部署和运行应用程序,屏蔽代码层次的差异,缩短从代码测试到产品部署的时间,Docker这些优势使得这个项目自开源后就被程序员广泛讨论和使用。

2.选择Docker的原因:

(1)开发环境帮助提高工作效率:Docker容器能够帮助开发人员、系统管理员、QA和版本控制工程师在一个生产环节中一起协同工作。Docker的容器标准使得而容器发生变化时,程序开发人员只需要专注于自己的代码即可,无需另外注意容器环境的变化,从而为开发人员提高工作效率提供必要的保障。

(2)构建方式简单:构建方式简单有助于组织新人快速理解一个应用程序从构建到运行的全部过程。

(3)容器启动时间迅速:Docker是一个轻量级的容器平台,启动时间迅速,减少开发、部署和测试的时间。

(4)适应多种环境:Docker可以在桌面环境、物理主机、虚拟主机等多种环境中部署。

二、如何在Windows上安装和设置Docker

在Docker容器中运行Selenium测试之前,我们需要在Windows上安装和设置Docker。首先,下载Windows版本的Docker。desktop for Windows 10是一个原生的Windows应用程序,它为构建、运行和交付Docker化的应用程序提供了一个易于使用的开发环境。它支持Linux和基于Windows的容器。在以下的演示中,将使用基于Linux的容器。

双击“窗口安装程序的Docker”运行安装程序。安装非常简单。

Windows的Docker需要WSL 2(Linux的Windows子系统)支持。选择启用Hyper-V Windows功能和安装WSL 2所需的Windows组件的必要选项。

安装成功后,你会收到以下消息。

三、在Docker中创建Selenium测试

与普通的Selenium Grid一样,带有Docker的Selenium Grid的配置包括在容器中安装Selenium Hub和所需的浏览器节点。

使用Selenium Docker容器可以以不同的方式运行Selenium测试。Selenium可以在独立(或单个)Docker容器上运行,也可以在由多个容器组成的Grid上运行。

1.在独立容器中运行Selenium

在本“如何在Docker中运行Selenium测试”指南中,我们使用一个容器来启动所有测试。首先,我们必须从Docker Hub下载Docker镜像。假如想要在Chrome和Firefox浏览器上执行测试时,就可以下载Chrome和 Firefox容器的镜像。

以管理员身份在终端(命令提示符或Power Shell)上运行以下命令:

下载镜像后,运行命令docker镜像来验证下载是否成功。如下图所示,我们看到最新版本的Chrome和Firefox容器可供使用:


(1)独立的Chrome (最新)

(2)独立的Firefox

你也可以通过导航到Docker Hub并搜索所需的图像来下载容器镜像的特定版本。例如,命令docker pull selenium/standalone-chrome:87.0将下载Chrome容器的87.0版本。

下载镜像后,运行命令docker镜像来验证下载是否成功。如下图所示,我们看到最新版本的Chrome和Firefox容器可供使用:

 连接到网络驱动程序的默认端口是4444,Chrome和Firefox容器将暴露给端口4444。因为我们想针对Chrome和Firefox浏览器运行Selenium测试,所以我们使用Chrome容器的端口4445和Firefox容器的端口4446。

运行端口号上显示的容器4445要连接到Chrome网络驱动程序:

运行端口号上显示的容器4446要连接到FireFox网络驱动程序:

如下图所示,Chrome和Firefox docker容器已成功启动:

在Windows PowerShell上运行docker ps命令显示Chrome和Firefox Docker容器已经准备好使用了:

现在我们必须配置远程网络驱动程序的网址:

Chrome容器

FireFox容器

现在,我们已经触及了Chrome和Firefox启动单个Docker容器的要点,让我们看看完整的执行。

安装启动

基于从testng.xml传递的参数“environment”,测试在Chrome或Firefox浏览器上运行。

Chrome容器远程网址为http://localhost:4445/wd/hub

FireFox容器远程网址为http://localhost:4446/wd/hub

执行

这样,我们都可以在各自的容器中运行测试。如容器截图所示,Chrome浏览器(或Chrome驱动程序)的两个实例在Chrome Docker容器(运行在端口号4445上)上被实例化

类似地,FireFox浏览器(或GeckoDriver)的两个实例在FireFoxDocker容器(运行在端口号4446上)上被实例化

测试是以headless的方式执行的,因为我们没有安装具有VNC的Docker镜像。如下所示,测试成功执行:

要查看容器内发生的情况,我们需要下载独立-chrome-调试和独立-FireFox-调试预先安装了VNC的图像。在独立容器中执行测试的主要缺点是可伸缩性低。因此,在独立容器中运行Selenium只适合小型项目。

2.在容器 Grid 中运行Selenium

第一个选项带来的可伸缩性问题可以通过在容器Grid中运行Selenium来解决。在大型项目中,你可能希望Selenium web自动化测试在不同的浏览器和操作系统组合上并行进行。这就是不同容器的Grid可以用来加速跨浏览器测试活动的地方。

使用这种方法,你可以获得许多不同浏览器(和浏览器版本)的实例。例如,你可以拥有Chrome v83.0的“X”实例、Chrome v76.0的“y”实例、Firefox 68.0的“Z”实例等等。可以针对各种浏览器的不同版本并行执行测试。

SeleniumGrid体系结构

这种方法使用Selenium Grid的“中枢/节点”模型。测试请求由客户端(或测试代码)发送到Hub,然后Hub将测试请求分派到最适合执行测试的节点。

为了演示如何使用容器Grid在Docker中运行Selenium测试,我们使用了最适合开发环境的设置。我们将使用调试变量节点或独立镜像,这样我们就可以使用VNC查看器在Docker中看到正在运行的测试。

默认情况下,调试镜像在端口号5900上启动VNC服务器。但是,默认端口可以重新映射到当前未使用的任何外部端口。

获取所需的Docker镜像

Grid是由多个Docker镜像组成的,在我们使用Hub和Nodes之前,应该首先提取这些镜像。

默认情况下,会下载最新版本的容器镜像。下面显示的截图表明Chrome和Firefox的Hub镜像和调试镜像已成功拉出。

运行命令docker镜像,以确保成功提取所有镜像。

安装了Chrome和Firefox的Grid节点必须连接到Grid中心。现在我们已经有了所需的图像,我们可以遵循以下方法之一在容器Grid中运行Selenium:

触发docker run命令,一次运行并启动一个容器。

使用docker-compose(或compose)来定义和运行多容器docker应用程序,并配置应用程序服务。

在第一种方法中,我们手动运行所需的命令来启动Selenium Hub,并将所需的浏览器节点(或图像)连接到Hub。这种方法最适合少量的测试,因为Hub和节点必须使用必要的命令手动启动。

在docker-compose(或compose)中,你使用YAML文件来配置应用程序服务。只需一个命令,你就可以从配置中灵活地创建和启动所有服务。使用Compose的另一个好处是,它可以在一系列环境中工作,例如试运行、生产、开发、测试和CI工作流。

如何使用Docker运行启动Docker容器

在这里,我们使用docker run命令来启动下载的Selenium镜像。一旦Hub启动,我们将Chrome和Firefox节点连接到Hub,这样Selenium web自动化测试就可以在其上执行。

以下是docker运行命令的语法:

docker运行命令应该强制指定一个图像来派生容器。让我们使用docker run命令启动Hub并将节点连接到它。

运行Selenium枢纽

一旦提取了所需的Docker镜像,我们就可以在Docker中启动Selenium Hub。我们使用以下命令启动SeleniumHub:

在这里,我们告诉Docker执行一个名为“selenium/hub”的容器,该图像被标记为“Selenium中枢”。

要公开端口,我们使用以下格式:

[ip]字段用于定义源,默认为0.0.0.0(如果未定义ip)。–publish list (或–p)选项将容器的端口发布给主机–publish-all (或–P)选项将所有公开的端口发布到随机端口。

在这里,host _ port 4444(4444:4444中的第一次出现)对外部世界是可访问的。你可以通过导航到以下网址来监控在所述端口上运行的Grid的状态:http://localhost:4444/grid/console。

我们通过在终端上运行命令docker PS–a来验证Selenium Hub容器是否已经启动。

将浏览器链接到Selenium Hub

–link标志采用以下形式:

其中“name”是需要链接的容器的名称,“alias”是链接名称的别名。

随着Selenium Hub的启动和运行,我们现在通过在终端上运行以下命令来启动Chrome和Firefox节点:

Chrome(调试)节点

FireFox(调试)节点

在例子中,selenium-hub(–link selenium-hub : hub)是我们链接到的容器,hub是容器的别名(–link selenium-hub:hub)。

执行上述命令后,Chrome和Firefox节点镜像将连接(或链接)到名为selenium-hub的容器。我们使用docker PS–一个命令来验证浏览器容器是否正在运行。

要检查Selenium Hub(或服务器)是否正在运行,Chrome & Firefox节点是否连接到该Hub,请运行命令docker 日志<Selenium Hub ContainerId>。

或者,网址http://localhost:4444/grid/console将显示SeleniumHub和连接到Hub的节点的状态。如果你在不同的端口上运行Selenium Hub容器,请使用该端口号,而不是URL中的4444。

文章来源:https://www.lambdatest.com/blog/run-selenium-tests-in-docker/

热门标签 换一换
语言模型安全 语言模型测试 软件报告书 软件测评报告书 第三方软件测评报告 检测报告厂家 软件检测报告厂家 第三方网站检测 第三方网站测评 第三方网站测试 检测报告 软件检测流程 软件检测报告 第三方软件检测 第三方软件检测机构 第三方检测机构 软件产品确认测试 软件功能性测试 功能性测试 软件崩溃 稳定性测试 API测试 API安全测试 网站测试测评 敏感数据泄露测试 敏感数据泄露 敏感数据泄露测试防护 课题软件交付 科研经费申请 软件网站系统竞赛 竞赛CMA资质补办通道 中学生软件网站系统CMA资质 大学生软件网站系统CMA资质 科研软件课题cma检测报告 科研软件课题cma检测 国家级科研软件CMA检测 科研软件课题 国家级科研软件 web测评 网站测试 网站测评 第三方软件验收公司 第三方软件验收 软件测试选题 软件测试课题是什么 软件测试课题研究报告 软件科研项目测评报告 软件科研项目测评内容 软件科研项目测评 长沙第三方软件测评中心 长沙第三方软件测评公司 长沙第三方软件测评机构 软件科研结项强制清单 软件课题验收 软件申报课题 数据脱敏 数据脱敏传输规范 远程测试实操指南 远程测试 易用性专业测试 软件易用性 政府企业软件采购验收 OA系统CMA软件测评 ERP系统CMA软件测评 CMA检测报告的法律价值 代码原创性 软件著作登记 软件著作权登记 教育APP备案 教育APP 信息化软件项目测评 信息化软件项目 校园软件项目验收标准 智慧软件项目 智慧校园软件项目 CSRF漏洞自动化测试 漏洞自动化测试 CSRF漏洞 反序列化漏洞测试 反序列化漏洞原理 反序列化漏洞 命令执行 命令注入 漏洞检测 文件上传漏洞 身份验证 出具CMA测试报告 cma资质认证 软件验收流程 软件招标文件 软件开发招标 卓码软件测评 WEB安全测试 漏洞挖掘 身份验证漏洞 测评网站并发压力 测评门户网站 Web软件测评 XSS跨站脚本 XSS跨站 C/S软件测评 B/S软件测评 渗透测试 网站安全 网络安全 WEB安全 并发压力测试 常见系统验收单 CRM系统验收 ERP系统验收 OA系统验收 软件项目招投 软件项目 软件投标 软件招标 软件验收 App兼容性测试 CNAS软件检测 CNAS软件检测资质 软件检测 软件检测排名 软件检测机构排名 Web安全测试 Web安全 Web兼容性测试 兼容性测试 web测试 黑盒测试 白盒测试 负载测试 软件易用性测试 软件测试用例 软件性能测试 科技项目验收测试 首版次软件 软件鉴定测试 软件渗透测试 软件安全测试 第三方软件测试报告 软件第三方测试报告 第三方软件测评机构 湖南软件测评公司 软件测评中心 软件第三方测试机构 软件安全测试报告 第三方软件测试公司 第三方软件测试机构 CMA软件测试 CNAS软件测试 第三方软件测试 移动app测试 软件确认测试 软件测评 第三方软件测评 软件测试公司 软件测试报告 跨浏览器测试 软件更新 行业资讯 软件测评机构 大数据测试 测试环境 网站优化 功能测试 APP测试 软件兼容测试 安全测评 第三方测试 测试工具 软件测试 验收测试 系统测试 测试外包 压力测试 测试平台 bug管理 性能测试 测试报告 测试框架 CNAS认可 CMA认证 自动化测试
专业测试,找专业团队,请联系我们!
咨询软件测试 400-607-0568