前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >利用UIRecorder做页面元素巡检

利用UIRecorder做页面元素巡检

作者头像
互联网金融打杂
发布2022-08-01 13:27:09
2.1K0
发布2022-08-01 13:27:09
举报

关于巡检,之前发过一篇《浅谈质量保障手段之巡检技术》,介绍了使用Python的eyeD3库进行MP3属性信息获取并做音频损坏的判断,可以理解为从服务端层面出发提出的解决方

本文是从前端的角度出发,介绍通过UIRecorder对页面元素比较固定的页面做特定元素巡检。

1.环境搭建

1.1 NodeJS根据电脑操作系统,选择对应的安装包,下载链接:https://nodejs.org/en/

1.2 NPMNPM 是 NodeJS 自带的包管理器,可以批量下载指定包的指定版本。由于 npm 是国外网络环境,可能被墙或下载速度较慢,可以使用 cnpm , 下载速度更快。运行以下命令安装 cnpm:

代码语言:javascript
复制
npm install -g cnpm --registry=https://registry.npm.taobao.org

1.3 Java安装 Java JDK 注:Windows 系统部分版本安装 Java 后,可能不会将 Java 添加到环境变量,需要手动添加。

1.4 UIRecorder运行以下命令安装 UIRecorder 及其相关依赖:

cnpm install uirecorder mocha macaca-reporter -g

可以使用以下命令检查安装情况:

cnpm list uirecorder -g cnpm list mocha -g cnpm list macaca-reporter -g

1.5 查看环境搭建是否OK

/usr/local/lib └── uirecorder@3.5.3 /usr/local/lib ├─┬ macaca-reporter@1.5.1 │ └── mocha@5.2.0 -> /usr/local/lib/node_modules/macaca-reporter/node_modules/_mocha@5.2.0@mocha └── mocha@9.1.4 /usr/local/lib └── macaca-reporter@1.5.1

2.用例录制

2.1 初始化工程

打开 terminal,新建一个工程目录:

// for example cd ~/Documents mkdir uirecorder_test cd uirecorder_test

初始化 UIRecorder 工程:

uirecorder init // 默认设置的话,一路回车就可以

2.2 工具栏介绍

UIRecorder 录制过程中,可以通过辅助工具栏优化录制效果,目前支持功能有:添加悬停、添加断言、使用变量、执行 js、添加延迟、脚本跳转、结束录制,如下图所示:

1dde49c3a93d85d5f58b64d36402931c.png
1dde49c3a93d85d5f58b64d36402931c.png

(1)添加悬停

当页面中存在二级目录等类似情况时,需要鼠标悬停操作,UIRecorder 就提供了添加悬停操作,可单次悬停或多次添加悬停。依据需求可自行选择实现方式。效果如图:

1248198660d906d8969ef5449f625665.png
1248198660d906d8969ef5449f625665.png
  • 单次悬停:点击“添加悬停”按钮,鼠标变为绿色锁定元素,单击后结束悬停。
  • 多次添加悬停:按住 command 键(Windows ctrl 键),点击添加悬停按钮,进入悬停模式,可释放 command 键,点击需要悬停的 DOM 控件,添加完成后,按下 esc 键或点击“结束悬停”按钮,退出悬停模式。

(2)添加断言

UIRecorder 支持丰富的断言类型:val、text、displayed、enabled、selected、attr、css、url、title、cookie、localStorage、SessionStorage。

db21f1c1c0a320363e973bb4e8df838d.png
db21f1c1c0a320363e973bb4e8df838d.png

步骤:点击“添加断言”按钮,点击需要断言的 DOM 节点,页面会弹出添加断言的窗口,在弹窗中输入相关信息,点击确认,添加断言成功。

  • 延迟时间:默认为 300ms
  • 断言类型:支持以上列出的 12 种类型
  • 断言 DOM:显示鼠标定位的元素
  • 比较方式:支持 7 种类型(equal、notEqual、contain、notContain、above、below、match、notMatch)
  • 断言结果:填写期望结果

(3) 使用变量

添加变量有 2 种方式。一种方式是在 config.json 文件中直接编辑添加;另一种方式是在录制页面,点击使用变量,选择创建变量。其中,所有变量字符串均支持 js 语法的模版字符串,如:{{productName}} ${new Date().getTime()} 。

  • 编辑 config.json ,设置变量
acd7836bd829690a4eabb5f743d0fde0.png
acd7836bd829690a4eabb5f743d0fde0.png
  • 在录制页面创建变量:

点击工具栏“使用变量”按钮,点击页面对应 DOM 节点,弹出弹窗,输入信息。

317e75a61b79abcf8906fec93e513170.png
317e75a61b79abcf8906fec93e513170.png
  • 在页面更新变量
2582e2816071703c4b937aef8ea3bf07.png
2582e2816071703c4b937aef8ea3bf07.png

(4)执行 JS

在录制页面,点击"执行JS"按钮,可输入一段 JS 代码并执行,如:

d43114175fff98309307411baefeac26.png
d43114175fff98309307411baefeac26.png

同时,也支持 jquery 语法,如下:

aee5ef43d6359b9581d9b2bb27daba67.png
aee5ef43d6359b9581d9b2bb27daba67.png
49c764e89997bcb719f118ed54a879df.png
49c764e89997bcb719f118ed54a879df.png

(5)添加延迟

在录制页面,点击“添加延迟”按钮,可在录制过程中添加延迟时间,在添加延迟弹窗中,输入延迟时间,并执行,默认为 1000ms,如下:

e48e42f66ad6940e924612a5467bab1c.png
e48e42f66ad6940e924612a5467bab1c.png

(6) 脚本跳转

录制过程中,可录制一些公用脚本,例如:登录脚本( common/test.login.js )、固定流程等。调用公共脚本的方法:在开始页面的时候输入 common/test.login.js,或者在录制中间页面时,点击脚本跳转,脚本跳转弹窗中输入 common/test.login.js。当 common/test.login.js 加载完成后,继续下面的录制步骤,效果如下:

3bb26f71bdb4246f3520d1a8d0963758.png
3bb26f71bdb4246f3520d1a8d0963758.png

2.3 开始录制

咱们就录制一个非常简单的用例:打开壹心理网站,并检查“发布文章”这几个字的文案是否正常。

  1. 新建测试用例录制:
代码语言:javascript
复制
uirecorder start

效果如图:

1cda4f7a445f10464f162a34387a623b.png
1cda4f7a445f10464f162a34387a623b.png

其中,一个脚本文件对应一个录制的测试用例,新建测试用例注意脚本文件名不要跟已有文件名冲突。

  1. 录制浏览器会自动打开,注意本地 hosts 配置 127.0.0.1 localhost。进入页面输入 url 则可以开始录制。默认会打开同步校验浏览器,该浏览器的作用是在录制的同时做回归测试校验,如果提示执行失败,则说明回归测试过程很大几率也会执行失败,需要对录制过程进行优化(比如借助工具栏辅助功能)。
ffeffb968f7ebe2ca597d30c1538f01c.png
ffeffb968f7ebe2ca597d30c1538f01c.png
  1. 打开页面后,点击“添加断言”,将鼠标放置“发布文章”,会弹框 断言内容,下图是断言text为“发布文章”。
d6e111e84d02b49f294b91ba7f185fa3.png
d6e111e84d02b49f294b91ba7f185fa3.png
  1. 点击结束录制,即录制完毕。
代码语言:javascript
复制
------------------------------------------------------------------
​
录制浏览器已开启
  url: https://www.xinli001.com/
   ✓ 执行成功
  waitBody:
   ✓ 执行成功
  expect: text, //span[text()="发布文章"], equal, 发布文章
   ✓ 执行成功
------------------------------------------------------------------
共录制3个步骤,其中校验通过: 3个,校验失败: 0个
录制脚本已保存: page_test_001.spec.js
​
录制服务器已关闭
录制浏览器已关闭
校验浏览器已关闭

3. 回归测试

回归测试的时候,执行脚本相关 api (比如 driver.click()  ),从而调用浏览器执行对应操作的能力(比如 点击操作),是通过调用 WebDriver 服务的能力实现的。

在 UIRecorder 初始化生成的 project 目录下,集成了 selenium-standalone,可提供本地 WebDriver 服务。

3.1 本地启动 WebDriver 服务即在电脑本地启动 WebDriver 服务,可以在本地查看浏览器回归效果及回归报告。执行以下命令:

// 进入工程目录 cd ~/Documents/uirecorder_test // 启动 webdriver 服务 cnpm run server

3.2 运行测试用例

打开新的命令行窗口,进入到 uirecorder 项目目录下。所有测试用例指所有以 .spec.js 后缀命名的文件(如有需要,可在 package.json 中修改 script 配置),运行测试用例命令如下:

# 运行 所有测试用例 npm run paralleltest # 运行 .spec.js 后缀的文件 npm run moduletest sample/*.spec.js # 运行 x.spec.js 的测试用例 npm run singletest sample/x.spec.js

3.3 运行效果如图

df5c914cc23a91b3a8b79158e88bed3b.png
df5c914cc23a91b3a8b79158e88bed3b.png

打开当前目录 ./reports/index.html 文件查看格式化报告,效果如图

cf92941d69e41f6e9f2bf760758ffb98.png
cf92941d69e41f6e9f2bf760758ffb98.png

3.4 上传用例至gitee

本地回归通过后,将用例提交至代码仓库,用于自动化巡检。「上传过程略」

4.Jenkins任务配置

我本地的Jenkins是通过Tomcat 8运行,将Jenkins war包放到tomcat的webapps下直接启动tomcat即可。

4.1 创建构建任务

9ee110b0c7017e44dd8c5e254d7ba55a.png
9ee110b0c7017e44dd8c5e254d7ba55a.png
0f6bf54ea6387d642e429fa525f98d85.png
0f6bf54ea6387d642e429fa525f98d85.png

4.2 运行任务

c5b0f79cb48cefa7d872023f9d26a6e5.png
c5b0f79cb48cefa7d872023f9d26a6e5.png

5.配置报警

  1. 创建报警群,拉一个机器人,用于巡检失败报警
19b50480300d0c48d5cc58b00a6118cd.png
19b50480300d0c48d5cc58b00a6118cd.png
a3a0a337fedde015e6f43ff7129572ed.png
a3a0a337fedde015e6f43ff7129572ed.png
  1. Jenkins配置钉钉机器人

系统管理——插件管理——添加DingTalk,选择安装后重启Jenkins

ad4d9882129cbdfe75c507bf9ba3658b.png
ad4d9882129cbdfe75c507bf9ba3658b.png
  1. 系统管理——系统配置——设置钉钉
54704753f5c991e4b5a8598823e39051.png
54704753f5c991e4b5a8598823e39051.png
  1. 项目关联,将钉钉机器人关联到项目
79c26acb788296816b58a9ff5424b241.png
79c26acb788296816b58a9ff5424b241.png
  1. 效果预览
330386ff3c624d80895eef815785a11e.png
330386ff3c624d80895eef815785a11e.png
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-07-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.环境搭建
  • 2.用例录制
  • 3. 回归测试
  • 4.Jenkins任务配置
  • 5.配置报警
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档