0


DevOps(十三)Jenkins之Selenium插件配置

一、Selenium Grid详细介绍

Selenium Grid 是 Selenium 测试套件的一部分,主要用于通过并行执行测试来提高测试执行的速度和效率。它允许您在多个环境(不同的浏览器和操作系统)上同时运行测试,从而帮助在开发过程中快速发现跨浏览器的兼容性问题。

核心功能

  1. 并行测试执行:Selenium Grid 允许同时在多个浏览器、版本和操作系统上运行相同的测试用例,这有助于缩短测试周期。
  2. 扩展性:可以轻松地增加或删除节点(即可运行测试的浏览器实例),这使得 Selenium Grid 可以根据需求扩展。
  3. 远程执行:测试脚本可以在不同的机器上远程执行,这意味着测试机器可以独立于开发和部署环境设置。

架构组件

Selenium Grid 的架构主要由两个组件组成:

  1. Hub:Hub 是 Selenium Grid 的心脏,负责管理测试的分发到各个注册的节点上。它接收来自测试的请求,并将它们智能地分配到节点上,这些节点配置有适当的浏览器和操作系统。
  2. Node:Node 是连接到 Hub 的机器,运行实际的浏览器实例。一个 Grid 可以有多个节点,每个节点可以运行不同类型的浏览器和浏览器版本。节点接收来自 Hub 的命令,并在其上执行测试。

配置和使用

要使用 Selenium Grid,必须首先设置 Hub 和一个或多个 Node。

  1. 启动 Hubjava -jar selenium-server-standalone-<version>.jar -role hub这将启动一个 Hub,并监听默认的4444端口。
  2. 注册 Nodejava -jar selenium-server-standalone-<version>.jar -role node -hub http://<hub_ip>:4444/grid/register在这里,<hub_ip> 是 Hub 机器的 IP 地址,Node 将向此地址注册自己。
  3. 配置文件:可以通过 JSON 配置文件来详细定义 Node 的能力(即可以运行哪些浏览器以及版本等)。

实际用途

在实际使用中,测试脚本需要配置 WebDriver 来指向 Hub 的地址。当测试运行时,WebDriver 会向 Hub 发送请求,Hub 将请求分配到一个适当的 Node 上执行。

例如,在 Java 中配置 WebDriver:

WebDriver driver = new RemoteWebDriver(new URL("http://<hub_ip>:4444/wd/hub"), DesiredCapabilities.chrome());

这里的 URL 是 Hub 的地址,

DesiredCapabilities.chrome()

指定了希望测试在 Chrome 浏览器上运行。

优点和局限

优点

  • 提高了测试的速度和效率。
  • 支持跨浏览器和跨平台测试。
  • 可以轻松地扩展测试环境。

局限

  • 需要更多的维护和监控。
  • 需要对网络配置有一定的了解,尤其是在大规模部署时。
  • 可能需要更多的硬件资源,因为每个 Node 都可能运行多个浏览器实例。

Selenium Grid 是一个强大的工具,特别适用于需要在多种浏览器和操作系统上运行测试的大型项目。通过有效地使用 Grid,团队可以显著提高其测试过程的效率和覆盖率。

二、Selenium jenkins插件安装配置

要在 Jenkins 中配置和使用 Selenium 插件,您需要按照以下步骤操作。这包括安装插件、设置 Selenium Grid、配置 Jenkins 任务以运行 Selenium 测试,以及查看测试结果。以下是详细的步骤:

1. 安装 Selenium 插件

首先,您需要在 Jenkins 中安装 Selenium 插件:

  • 登录到 Jenkins 控制台。
  • 导航到 Manage Jenkins > Manage Plugins
  • Available(可用插件)标签页中,搜索 Selenium Plugin
  • 选中它并点击 Install without restartDownload now and install after restart
  • 安装完成后,根据需要重启 Jenkins。

2. 配置 Selenium Grid

安装插件后,您需要配置 Selenium Grid:

  • 返回到 Jenkins 控制台,导航到 Manage Jenkins > Configure System
  • 滚动到 Selenium Grid 部分。
  • 点击 Add a Selenium Grid
  • 输入 Grid 的名称和其他配置参数,如端口号等。通常,端口号是 4444。
  • 点击 Save 以保存配置。

3. 添加节点

在配置了 Grid 之后,您需要添加节点:

首先你要查看selenium-server-standalone-3.141.59.jar这个文件的位置,查找到安装的位置以后,我们使用命令,启动node节点,并注册到hub当中。

java -jar selenium-server-standalone-3.141.59.jar -role node -hub http://192.168.110.170:4444/grid/register

注意,这里面的selenium-server-standalone文件的版本号换成你自己安装的版本号,hub对应的服务器地址为修改成为你的服务器地址。执行后得到如下结果:

java -jar /var/lib/jenkins/plugins/selenium/WEB-INF/lib/selenium-server-standalone-3.141.59.jar -role node -hub http://192.168.110.170:4444/wd/hub
14:21:08.842 INFO [GridLauncherV3.parse] - Selenium server version: 3.141.59, revision: e82be7d358
14:21:08.933 INFO [GridLauncherV3.lambda$buildLaunchers$7] - Launching a Selenium Grid node on port 27480
2024-04-24 14:21:09.006:INFO::main: Logging initialized @350ms to org.seleniumhq.jetty9.util.log.StdErrLog
14:21:09.228 INFO [WebDriverServlet.<init>] - Initialising WebDriverServlet
14:21:09.296 INFO [SeleniumServer.boot] - Selenium Server is up and running on port 27480
14:21:09.296 INFO [GridLauncherV3.lambda$buildLaunchers$7] - Selenium Grid node is up and ready to register to the hub
14:21:09.329 INFO [SelfRegisteringRemote$1.run] - Starting auto registration thread. Will try to register every 5000 ms.
14:21:09.524 WARN [SelfRegisteringRemote.registerToHub] - Error getting the parameters from the hub. The node may end up with wrong timeouts.Error with the JSON of the config : hudson.plugins.selenium.JenkinsCapabilityMatcher could not be coerced to instance
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:53'
System info: host: 'awx', ip: '127.0.1.1', os.name: 'Linux', os.arch: 'amd64', os.version: '5.4.0-174-generic', java.version: '11.0.22'
Driver info: driver.version: unknown
14:21:09.524 INFO [SelfRegisteringRemote.registerToHub] - Registering the node to the hub: http://192.168.110.170:4444/grid/register
14:21:09.540 INFO [SelfRegisteringRemote.registerToHub] - The node is registered to the hub and ready to use

根据日志信息,可以看出 Selenium Grid 节点已经成功启动并注册到 Hub 了。关键信息如下:

  1. 节点启动成功:14:04:56.831 INFO [SeleniumServer.boot] - Selenium Server is up and running on port 912814:04:56.831 INFO [GridLauncherV3.lambda$buildLaunchers$7] - Selenium Grid node is up and ready to register to the hub这表明 Selenium 服务器已经在端口 9128 上启动,并且节点已准备好注册到 Hub。
  2. 节点开始自动注册:14:04:56.870 INFO [SelfRegisteringRemote$1.run] - Starting auto registration thread. Will try to register every 5000 ms.节点开始自动注册线程,每隔 5000 毫秒(5 秒)尝试注册到 Hub。
  3. 节点注册成功:14:04:57.145 INFO [SelfRegisteringRemote.registerToHub] - The node is registered to the hub and ready to use这条日志信息明确表示节点已成功注册到 Hub,并且已准备好使用。

虽然在注册过程中出现了一个警告:

14:04:57.107 WARN [SelfRegisteringRemote.registerToHub] - Error getting the parameters from the hub. The node may end up with wrong timeouts.Error with the JSON of the config : hudson.plugins.selenium.JenkinsCapabilityMatcher could not be coerced to instance

这个警告表示在从 Hub 获取参数时出现了错误,可能导致节点的超时时间设置不正确。但是,这个警告并不影响节点的注册和使用。

4. 使用 Jenkins Job 运行 Selenium 测试

接下来,您需要设置一个 Jenkins 任务来运行 Selenium 测试:

  • 在 Jenkins 控制台中,点击 New Item
  • 输入项目名称,选择项目类型(例如 Freestyle project),然后点击 OK
  • 在配置页面,滚动到 Build 部分。
  • 点击 Add build step,然后选择适合您测试脚本的步骤,例如 Execute shellInvoke top-level Maven targets
  • 在构建步骤中,输入您的测试命令或脚本。例如,如果您使用 Maven,您可以输入: mvn test 确保您的测试脚本配置为指向 Jenkins 中配置的 Selenium Grid。
  • 点击 Save 保存项目配置。

5. 运行 Job 并查看结果

  • 返回到项目页面,点击 Build Now 来运行您的测试。
  • 完成后,点击左侧的 Build History 查看构建。
  • 点击具体的构建号,然后点击 Console Output 查看测试日志和结果。

6. 集成测试报告

为了更好地查看测试结果,您可以集成如 JUnit 或 TestNG 的测试报告插件:

  • 在项目配置中,添加 Post-build Actions
  • 选择 Publish JUnit test result reportPublish TestNG Results(根据您使用的测试框架)。
  • 配置报告的路径。
  • 保存更改并重新运行测试。

通过这些步骤,您可以在 Jenkins 中完全自动化地运行和管理 Selenium 测试,从而充分利用 Selenium Grid 的并行测试能力。这有助于提高测试效率,同时确保您的 Web 应用在多种浏览器和环境中的兼容性和性能。

标签: devops jenkins selenium

本文转载自: https://blog.csdn.net/benshu_001/article/details/138157641
版权归原作者 Coder加油! 所有, 如有侵权,请联系我们删除。

“DevOps(十三)Jenkins之Selenium插件配置”的评论:

还没有评论