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. 启动 Hub

    java -jar selenium-server-standalone-<version>.jar -role hub
    

    这将启动一个 Hub,并监听默认的4444端口。

  2. 注册 Node

    java -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 restart 或 Download 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 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。

  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 shell 或 Invoke 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 report 或 Publish TestNG Results(根据您使用的测试框架)。
  • 配置报告的路径。
  • 保存更改并重新运行测试。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/2892.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Github 2024-04-25Go开源项目日报Top10

根据Github Trendings的统计,今日(2024-04-25统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Go项目10Vue项目1Go编程语言:构建简单、可靠和高效的软件 创建周期:3474 天开发语言:Go协议类型:BSD 3-Clause “New” or “Revised” Lic…

spark3.0.0单机模式安装

注&#xff1a;此安装教程基于hadoop3集群版本 下载安装包 下载spark3.0.0版本&#xff0c;hadoop和spark版本要对应&#xff0c;否则会不兼容 用xftp上传Linux虚拟机&#xff0c;上传目录/bigdata&#xff08;可修改&#xff09; 解压 tar -zxvf /bigdata/spark-3.0.0-bin-h…

背包问题汇总

本文涉及知识点 动态规划汇总 状态机dp 01背包 有n件物品&#xff0c;体积分别是v[i]&#xff0c;价值分别是w[i]&#xff0c;有个包的容积是bv。如何选择物品使得&#xff0c;在总体积不超过vb的前提下&#xff0c;让总价值最大。 动态规划的状态表示 dp[i][j] 表示处理完…

CentOS 7.9.2009 中 Docker 使用 GPU

一、安装nvidia驱动 1.1&#xff0c;查看显卡驱动 # 查看显卡型号 lspci | grep -i nvidia 1.2&#xff0c;进入 PCI devices &#xff0c;输入上一步查询到的 2204 1.3&#xff0c;进入 官方驱动 | NVIDIA&#xff0c;查询 Geforce RTX 3090 驱动并下载 1.4&#xff0c;禁用…

冯老师降维打击申论课

冯老师降维打击申论课&#xff0c;以其独到的见解和精湛的教学技巧&#xff0c;将复杂的申论知识变得简单易懂。通过深入浅出的讲解&#xff0c;帮助考生迅速掌握申论精髓&#xff0c;轻松应对考试。课程内容丰富实用&#xff0c;深受考生好评&#xff0c;是备考申论的不二之选…

【SQL代理中转注入】对DVWA登录界面username字段实施注入

一、实验过程 步骤0&#xff1a;注释掉相关username防护&#xff0c;截图如下&#xff1a; 以DVWA为攻击目标&#xff0c;将login.php中第21、22行注释掉 步骤1&#xff1a;源码分析&#xff0c;截图如下&#xff1a; 如此可知&#xff0c;首先需要通过token验证&#xff0c;然…

CTFHub(web sql)(四)

Cookie注入 Cookie 注入的原理也和其他注入一样&#xff0c;只不过是将提交的参数已 Cookie 方式提交&#xff0c;而一般的注入是使用 GET 或者 POST 方式提交&#xff0c;GET 方式提交就是直接在网址后面加上需要注入的语句&#xff0c;POST 方式则是通过表单&#xff0c;GET …

feign整合sentinel做降级知识点

1&#xff0c;配置依赖 <!-- Feign远程调用依赖 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency> <!--sentinel--><dependency>…

【数据结构(邓俊辉)学习笔记】向量04——有序向量

文章目录 0.概述1.比较器2.有序性甄别3.唯一化3.1低效算法3.1.1实现3.1.2 复杂度3.1.3 改进思路3.2 高效算法3.2.1 实现3.2.2 复杂度 4.查找4.1统一接口4.2 语义定义4.3 二分查找4.3.1 原理4.3.2 实现4.3.3 复杂度4.3.4 查找长度4.3.5 不足 4.4 Fibonacci查找4.4.1 思路及原理4…

【03-掌握Scikit-learn:深入机器学习的实用技术】

文章目录 前言数据预处理缺失值处理数据缩放特征选择模型训练参数调整模型评估总结前言 经过了对Python和Scikit-learn的基础安装及简单应用,我们现在将更深入地探究Scikit-learn的实用技术,以进一步提升我们的数据科学技能。在本文中,我们将涵盖数据预处理、特征选择、模型…

Qt中的 tableView 设置 二进制 十六进制 序号表头

二 进制序号 因为QTableView的垂直表头并不支持使用委托来自定义。 相反&#xff0c;可以通过将自定义的QWidget作为QHeaderView的标签来实现这一目标。 代码&#xff1a; #include <QApplication> #include <QMainWindow> #include <QVBoxLayout> #include …

企业微信hook接口协议,根据手机号搜索联系人

根据手机号搜索联系人 参数名必选类型说明uuid是String每个实例的唯一标识&#xff0c;根据uuid操作具体企业微信 请求示例 {"uuid":"3240fde0-45e2-48c0-90e8-cb098d0ebe43","phoneNumber":"1357xxxx" } 返回示例 {"data&q…

opencv可视化图片-----c++

可视化图片 #include <opencv2/opencv.hpp> #include <opencv2/core.hpp> #include <filesystem>// 将数据类型转换为字符串 std::string opencvTool::type2str(int type) {std::string r;uchar depth type & CV_MAT_DEPTH_MASK;uchar chans 1 (typ…

rust是否可以用于8051单片机开发工作?

目前&#xff0c;Rust 在嵌入式领域的发展主要集中在一些常见的架构上&#xff0c;如ARM Cortex-M&#xff08;包括STM32系列&#xff09;、RISC-V等。我这里有一套嵌入式入门教程&#xff0c;不仅包含了详细的视频 讲解&#xff0c;项目实战。如果你渴望学习嵌入式&#xff0c…

递归、搜索与回溯算法:FloodFill 算法

例题一 算法思路&#xff1a; 可以利⽤「深搜」或者「宽搜」&#xff0c;遍历到与该点相连的所有「像素相同的点」&#xff0c;然后将其修改成指定的像素即可。 全局变量&#xff1a; int dx[4] { 0,0,1,-1 }, dy[4] { 1,-1,0,0 }; int m, n; int precolor;//记录原先的颜色…

debian和ubuntu的核心系统和系统命令的区别

Debian和Ubuntu虽然有很深的渊源&#xff0c;都是基于Debian的发行版&#xff0c;但它们在核心系统和系统命令上还是有一些差别的。以下是一些主要的不同之处&#xff1a; 1. 发布周期&#xff1a; - Debian&#xff1a; Debian项目采用滚动发布模型&#xff0c;持续更新&a…

CCF区块链会议--Middleware 2024 截止5.24 附录用率

会议名称&#xff1a;Middleware CCF等级&#xff1a;CCF B类会议 类别&#xff1a;软件工程/系统软件/程序设计语言 录用率&#xff1a;2022年录用率38%&#xff08;8/21&#xff09; Topics of Interest The Middleware conference seeks original submissions of resear…

【Linux网络】Linux网络设置

如果你不会网络设置&#xff0c;就好比自己的拖鞋被硬控了&#xff0c;导致自己无法下床 目录 一、网络配置 1.1 主要配置网络的配置项 1.2 ifconfig——查看网卡配置 1.3 route——路由 1.4 hostname——主机名 1.5 ss——查看网络链接状态 1.6 scp——远程拷贝 1.7 …

<网络> HTTP

目录 前言&#xff1a; 一、再谈协议 &#xff08;一&#xff09;认识URL &#xff08;二&#xff09;Encode 和 Decode 二、HTTP 协议 &#xff08;一&#xff09;协议格式 &#xff08;二&#xff09;见一见请求 &#xff08;三&#xff09;见一见响应 三、模拟实现响…

百度安全多篇议题入选Blackhat Asia以硬技术发现“芯”问题

Blackhat Asia 2024于4月中旬在新加坡隆重举行。此次大会聚集了业界最杰出的信息安全专业人士和研究者&#xff0c;为参会人员提供了安全领域最新的研究成果和发展趋势。在本次大会上&#xff0c;百度安全共有三篇技术议题被大会收录&#xff0c;主要围绕自动驾驶控制器安全、跨…