赞
踩
Selenium Grid 是 Selenium 测试套件的一部分,主要用于通过并行执行测试来提高测试执行的速度和效率。它允许您在多个环境(不同的浏览器和操作系统)上同时运行测试,从而帮助在开发过程中快速发现跨浏览器的兼容性问题。
Selenium Grid 的架构主要由两个组件组成:
要使用 Selenium Grid,必须首先设置 Hub 和一个或多个 Node。
启动 Hub:
java -jar selenium-server-standalone-<version>.jar -role hub
这将启动一个 Hub,并监听默认的4444端口。
注册 Node:
java -jar selenium-server-standalone-<version>.jar -role node -hub http://<hub_ip>:4444/grid/register
在这里,<hub_ip>
是 Hub 机器的 IP 地址,Node 将向此地址注册自己。
配置文件:可以通过 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 浏览器上运行。
优点:
局限:
Selenium Grid 是一个强大的工具,特别适用于需要在多种浏览器和操作系统上运行测试的大型项目。通过有效地使用 Grid,团队可以显著提高其测试过程的效率和覆盖率。
要在 Jenkins 中配置和使用 Selenium 插件,您需要按照以下步骤操作。这包括安装插件、设置 Selenium Grid、配置 Jenkins 任务以运行 Selenium 测试,以及查看测试结果。以下是详细的步骤:
首先,您需要在 Jenkins 中安装 Selenium 插件:
安装插件后,您需要配置 Selenium Grid:
在配置了 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 了。关键信息如下:
节点启动成功:
- 14:04:56.831 INFO [SeleniumServer.boot] - Selenium Server is up and running on port 9128
- 14:04:56.831 INFO [GridLauncherV3.lambda$buildLaunchers$7] - Selenium Grid node is up and ready to register to the hub
这表明 Selenium 服务器已经在端口 9128 上启动,并且节点已准备好注册到 Hub。
节点开始自动注册:
14:04:56.870 INFO [SelfRegisteringRemote$1.run] - Starting auto registration thread. Will try to register every 5000 ms.
节点开始自动注册线程,每隔 5000 毫秒(5 秒)尝试注册到 Hub。
节点注册成功:
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 获取参数时出现了错误,可能导致节点的超时时间设置不正确。但是,这个警告并不影响节点的注册和使用。
接下来,您需要设置一个 Jenkins 任务来运行 Selenium 测试:
mvn test
确保您的测试脚本配置为指向 Jenkins 中配置的 Selenium Grid。为了更好地查看测试结果,您可以集成如 JUnit 或 TestNG 的测试报告插件:
通过这些步骤,您可以在 Jenkins 中完全自动化地运行和管理 Selenium 测试,从而充分利用 Selenium Grid 的并行测试能力。这有助于提高测试效率,同时确保您的 Web 应用在多种浏览器和环境中的兼容性和性能。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。