自动化录制工具

简介

你想象过可以让任何一个完全没有自动化经验的人,可以1分钟录制出可读性高,且强大的自动化脚本工具吗?

还真存在这么一款UI自动化录制工具,它就是由alibaba Macaca团队开源的UiRecorder。

这是一款基于WebDriver、Chrome浏览器、NodeJs等方案共同打造的零成本自动化解决方案。

基于几乎零成本的【录制方案】,让所有开发和测试能够最低成本的获得自动化测试的能力,把重复又枯燥的测试工作全部交给计算机,彻底的提高测试效率,解放我们的生产力。

跨平台:适用于Windows、linux、mac

三端录制:PC、移动端(android、iOS)

(也许你看到标题第一反应是Selenium IDE,但实际上Selenium IDE已停止维护好多年了,UI Recorder 要比Selenium IDE更加强大,支持多端录制)

环境

安装配置JDK环境变量

JDK 8.0

安装配置Node环境变量

Node.js 10

More info: uirecorder官网

安装

mocha安装

(此处说明下:录制的脚本运行环境基于mocha框架,因此需要安装mocha)

1.全局安装mocha

windows

(1)打开终端窗口:开始-运行-cmd 右击以管理员身份运行

1
npm install mocha -g

(2)安装完成后,配置到系统变量
打开系统变量path 末尾加入C:\Program Files\nodejs\node_global 确定保存

(3)检查mocha是否安装成功

1
mocha -V

mac

(1)打开终端窗口

1
npm install mocha -g

(2)检查mocha是否安装成功

1
mocha -V

2.全局安装uirecorder

此处说明下:安装uirecorder时,需要下载chrome浏览器驱动会超时报错,因为这边下载默认从谷歌官方。

解决办法:设置淘宝镜像下载路径

windows执行

1
set CHROMEDRIVER_CDNURL=http://npm.taobao.org/mirrors/chromedriver

mac执行

1
export CHROMEDRIVER_CDNURL=http://npm.taobao.org/mirrors/chromedriver

windows

(1)打开终端窗口:开始-运行-cmd 右击以管理员身份运行

1
npm install uirecorder -g

(2)检查uirecorder是否安装成功

1
uirecorder --version

img

mac

(1)打开终端窗口

1
npm install uirecorder -g

(2)检查uirecorder是否安装成功

1
uirecorder --version

3.全局安装mochawesome

Uirecorder报告是借助mochawesome来展示脚本执行结果,再回放录制脚本的时候使用只要带入参数mochawesome

(1)打开终端窗口:开始-运行-cmd 右击以管理员身份运行

1
npm install mochawesome -g

4.chrome浏览器安装(如果已安装要升级到最新版)

下载地址

5.移动端录制需要安装配置环境android SDK 、ios开发工具

可以参照appium-doctor

appium-doctor

框架

实际上UiRecorder录制生成的脚本,是一个基于nodejs+mocha+jwebdriver框架的自动化工程,回放脚本是通过执行mocha命令并附带mochawesome报告参数来生成测试报告

基础操作(录制与回放)

web

1.录制

(1)以文件夹来划分录制项目模块

①新建一个文件夹A,用来放录制脚本存放位置

②打开终端窗口:开始-运行-cmd 右击以管理员身份运行,进入到新建文件夹A目录下

(2)Uirecorder初始化

①在新建的文件夹A下,新建一个文件夹test,用于存放录制的脚本

②执行初始化

打开终端窗口:开始-运行-cmd 右击以管理员身份运行

1
2
cd test  
uirecorder init

此处说明下:uirecorder初始化会自动生成配置文件,建议使用默认配置,一路回车即可。
初始化完成后会自动安装相关依赖

初始化

自动安装浏览器驱动

初始化完后当前目录下生成以下文件
如下所示:

1
2
3
4
5
6
7
8
9
10
uirecorder初始化文件夹说明
Commons:公共脚本文件夹
Diffbase:图片对比文件夹
node_modules:node核心文件库
reports:测试报告文件夹
sample:示例脚本目录
screenshots:测试执行截图保存目录
uploadfiles:附件保存文件夹,比如写信页上传附件,要求把附件先放入该目录;
config.Json:运行配置文件,比如IP,浏览器
run.bat:运行测试,执行该命令会运行所有的测试脚本

(3)录制脚本

打开终端窗口:开始-运行-cmd 右击以管理员身份运行

1
uirecorder start

①Uirecorder配置向导会提示输入要使用的测试脚本名称:

1
2
例如:输入test/test.1.js
表示录制的脚本要存放在test文件夹下的test.1.js

②配置向导提示你输入是否同步校验浏览器:

1
2
例如:输入Y
表示启用同步校验浏览器

③配置向导提示你输入浏览器大小:

1
2
例如:输入maximize
表示窗口最大化

(配置向导完成之后会自动打开chrome页面(同时打开校验页面,校验页面没有内容)

④输入打算录制的页面地址

1
例如:输入百度地址https://www.baidu.com

⑤点击【开始录制】按钮,进入录制模式

工具面板

录制页面会显示一个uirecorder工具面板,此时你的所有操作均会被录制下来。
例如:鼠标(点击事件)、键盘(按键事件)等操作

⑥期间,可以使用工具面板上面的功能:

属性开关、属性黑名单、添加悬停、添加断言、执行JS、添加延迟、脚本跳转、结束录制

工具面板

工具面板
⑦每录制成功,屏幕右下角会弹出执行成功的提示

⑧录制结束

点击【结束录制】按钮,即可结束录制,自动关闭浏览器

同时在test目录下生成一个脚本文件,文件名称便是在启用录制时,咱们命名的脚本名称

终端窗口也会同步显示录制记录结果

终端窗口

2.回放脚本

此处说明下:回放脚本借助mocha框架回放js脚本,并生成mochawesome结果报告,所以需要你在之前环境准备过程中安装mochawesome node模块

①安装mochawesome

开始-运行-cmd,以管理员身份运行

1
npm install mochawesome -g

②安装selenium-standalone与浏览器驱动

此处说明下:回放脚本需要启动selenium-standalone服务,实际上我们刚才在uirecorder init 初始化时,已下载安装了selenium-standalone和相关浏览器驱动)。

(启动selenium-standalone服务有两种方式:一种是独立包方式、另一种是全局node模块模式,建议使用全局node模块模式)

【第一种方式】独立包方式 (优势:可以手动更换浏览器driver)

(如果你的浏览器是非安装版,双击即可直接打开,并且浏览器版本和浏览器驱动版本想要固定不变,可以采用这种方式)

【A】下载selenium-standalone到本地,下载地址(建议放置放录制脚本目录下)

img

【B】启动selenium-server-standalone

打开终端窗口:开始-运行-cmd 右击以管理员身份运行

1
cd 存放selenium-server-standalone.jar包路径下

1
java -jar selenium-server-standalone-3.9.1.jar

img

【C】下载chromedriver到本地,下载地址

img

此处说明下:chromedriver版本与你本地电脑安装的chrome版本需要对应,谷歌官方对应版本查看地址https://sites.google.com/a/chromium.org/chromedriver/downloads

不能翻墙可以看这里
(我本地chrome浏览器版本是68, 因此下载chromedriver版本应该是2.40)

【D】下载后双击chromedriver打开服务

img

img

第二种方式:全局安装

此处说明:安装前需要设置淘宝镜像,因为chromedriver默认是从谷歌官网下载下来,未设置淘宝镜像会报超时。(如果你有翻墙那是最好,但建议你关闭翻墙代理,使用淘宝镜像地址进行下载)

【A】全局安装node selenium-standalone模块

1
npm install selenium-standalone -g

img

【C】 安装selenium驱动、浏览器驱动

1
selenium-standalone install

【B】 启用服务

1
selenium-standalone start

img

③执行回放脚本

此处说明下:回放脚本方式有两种第一种借助mocha框架执行指定位置脚本,第二种使用bat文件

【第一种方式】推荐使用

【A】运行单个脚本
开始-运行-cmd,以管理员身份运行

1
mocha 脚本路径名称 --reporter mochawesome

例如:

1
mocha C:\Users\lyc\Desktop\A\test\test.1.js --reporter mochawesome

img

此处说明下:回放脚本前,如果你使用独立方式安装selenium-standalone,那么需要开启selenium-server-standalone服务、开启chromedriver服务,且不能关闭。

【B】运行所有脚本

开始-运行-cmd,以管理员身份运行

1
2
3
cd C:\Users\lyc\Desktop\A   //目录切换至新建文件夹A

mocha --reporter mochawesome

img

此处说明下:mocha框架自身默认会执行以test命名的文件夹下所有脚本。

【第二种回放方式】

run运行测试用例
开始-运行-cmd,终端进入存放脚本的文件夹A,终端输入

1
run.bat

运行所有脚本
此处说明下,运行所有脚本需要配置/*/.spec.js,否则会报错

1
run.bat test\test.1.js

运行单个脚本

此处说明下:第二种方式windows平台使用run.bat 而linux平台使用 run.sh 此方法与第一种方式其实一样,只是把命令行封装到bat或sh文件中。

mobile

1.环境准备

(1)Android平台

①JDK(前面步骤我们已配置好)

②安装macaca

1
npm i -g macaca-cli

安装成功会显示:

macacalogo

macaca参考

③安装macaca-android

【A】设置淘宝镜像

1
npm config set registry http://registry.npm.taobao.org/

此处说明:不设置淘宝镜像,node将会从谷歌上面下载相关内容,在没有翻墙前提下,执行下一步【B】将会报超时下载失败。

【B】执行安装

1
npm i macaca-android -g

检查环境

macaca doctor

img

④启动macaca服务

1
macaca server --port 4444 --verbose

img

⑤Android sdk 环境变量配置

参考:https://jingyan.baidu.com/article/15622f2434bc5cfdfcbea51c.html

⑥安装Gradle

下载地址:https://gradle.org/releases/在此页面下载zip包,解压并加入环境变量

【A】PATH中加入%GRADLE_HOME%\bin

img

【B】新增GRADLE_HOME变量,变量值为Gradle存放位置

【C】检查是否配置成功
img

(mac直接安装即可)

(2)iOS平台(需要使用Mac系统)
安装配置

1
2
Xcode
Xcode Command Line Tool

此处说明:
①iOS安装包使用格式为.app(不能用.ipa)

②iOS需要在mac系统上配置,配置请参考:https://testerhome.com/topics/13273

③安装包使用格式为.apk或.zip(如果是.zip会提示你选择是android还是ios平台的安装包)

此处说明:如果你是从零开始,环境配置可以参考:

JDK https://jingyan.baidu.com/article/6dad5075d1dc40a123e36ea3.html

Android SDK https://jingyan.baidu.com/article/15622f2434bc5cfdfcbea51c.html

Android ADB https://jingyan.baidu.com/article/17bd8e52f514d985ab2bb800.html

Gradle https://jingyan.baidu.com/article/73c3ce2816eae9e50343d9fe.html

2.录制

(1)新建一个文件夹,比如命名为Mobile

(2)终端cd 进入Mobile文件夹内

(3)uirecorder 初始化

1
uirecorder init --mobile

(4)提示输入app安装包名(带格式后缀)

(5)输入安装包回车后,弹出浏览器,开始录制

1
uirecorder --mobile sample/test.spec.js

img

img

(6)开始录制

①新建一个文件夹命名为test,用于存放录制的脚本

②把测试包放入mobile文件夹下

此处说明下:
【A】android使用.apk格式安装包

【B】iOS使用.app格式的安装包(并不能用.ipa格式)

img

③uirecorder –mobile test/test.spec.js

参数说明:
–mobile 表示录制移动端

test表示脚本位于test文件夹

test.spec 表示用例脚本名称

【A】输入要进行录制测试包包名

【B】弹出浏览器,同时手机端弹出app安装(有些手机系统安全机制需要先输入安装密码执行安装,比如vivoX21)

img

如果你使用的是zip压缩包,会提示你选择android还是ios平台

img

【C】操作浏览器即可进行录制,录制工具使用方法和web端一样(详见第六部分介绍)

img

【D】每录制成功一步,屏幕右上角会有相应提示

img

【E】你还可以通过工具面板输入文字、后退、弹窗命令处理、断言、延迟等待、跳转到另一个之前录制的脚本、结束录制

img

【F】录制完毕,我们还可以通过编辑器打开Mobile文件夹,修改脚本内容,删除某些录制步骤

img

(7)注意事项:某些控件无法录制

有时候由于控件排版问题,或其他原因导致无法识别到元素,既是uirecorder识别到了,但点击也没反应。

解决办法:
修改脚本,直接在脚本内手动输入该元素(元素定位可以是用appium或者macaca inspect)

例如:录制某个按钮点击无效

通过编辑器打开并找到这个脚本位置,修改其元素选择器内容,如:xpath等,并直接执行mocha命令,通过浏览器进行调试。
如下图所示:

修改前

img

修改后

img

3.回放

(1)使用mocha命令
①全部脚本:

1
mocha --reporter mochawesome

②指定脚本:

1
mocha ./mobile/test/4S金融下单.js --reporter mochawesome

参数说明:–reporter mochawesome为生成报告参数,执行命令后会在根目录下生成mochawesome报告文件。
如下图所示:

img

(2)使用批处理命令

全部脚本:

run.sh ( Linux|Mac )

1
sudo sh run.sh ./mobile/test/4S金融下单.js

run.bat ( Windows )

1
run.bat ./mobile/test/4S金融下单.js

指定脚本:

1
2
run.sh sample/test.spec.js ( Linux|Mac ) 
run.bat sample/test.spec.js ( Windows )

高级使用(工具面板)

属性开关

进入录制页面后,属性开关全部为默认开启状态,因此在你点击任意DOM时,DomPath会自动选择属性并展示。
如下图所示:

鼠标点击页面DOM“Email:”,DomPath展示为://td[text()=”Email:”]

img

若将属性开关text关闭后,DomPath会自动选择其他属性并展示。(点击属性开关text,text置灰并关闭,再次点击点亮并开启)

img

此处说明下:建议都开启属性开关,避免元素无法定位。

属性黑名单

因为某些属性值是随机或不稳定,我们无法录制出稳定的CSS选择器路径,因此我们可以使用黑名单过滤这些属性值。

提示: 属性黑名单是一个正则表达式, 可以类似这样使用:/attr_\d+/

a)可以在UI Recorder初始化时,属性值黑名单正则设置时,输入黑名单正则表达式,如:/attr_\d+/

img

b)也可以在录制页面,属性黑名单处,输入黑名单正则表达式,如:/attr_\d+/

img

添加悬停

当页面中存在二级目录等类似情况时,需要鼠标悬停操作,UI Recorder就提供了添加悬停操作,可单次悬停或者多次添加悬停。依据需求可自行选择实现方式。
a)单次悬停,点击“添加悬停”按钮,鼠标变为绿色锁定元素,单击后结束悬停。

img

b)多次添加悬停,按下Ctrl键,点击添加悬停按钮,进入悬停模式,可释放Ctrl键;点击需要悬停的DOM控件(可多次添加悬停)。
按下Esc键 或 点击结束悬停按钮, 退出悬停模式。
悬停模式下,可对元素进行断言操作,点击添加断言按钮,点击需要断言的DOM控件。

img

添加断言

UI Recorder支持丰富的断言类型: val、text、displayed、enabled、selected、attr、css、url、title、cookie、localStorage、sessionStorage
步骤:点击添加断言按钮,点击需要断言的DOM控件。弹出添加断言的窗口,在窗口中填入相关信息。点击确认,添加断言成功。

#延迟时间,默认为300ms

#断言类型,支持以上列出的12种类型,根据自己的需要选择。

#断言DOM,显示鼠标定位的元素

#比较方式,支持7种类型:equal、notEqual、contain、notContain、above、below、match、notMatch,,根据自己的需要选择。

#断言结果,填写期望结果

img

脚本中设置断言的方法

1
2
3
4
5
6
7
8
//断言是否登录成功
it('expect: text, //*[@text="工作台"], equal, 工作台', async function(){
await driver.sleep(300).wait('//*[@text="工作台"]', 30000)
.text()
.should.not.be.a('error')
.should.equal(_(`工作台`));
});
//等待

使用变量

(1)添加变量有2种方式,一种方式是在config.json文件中直接编辑添加,另一种方式是在录制页面,点击使用变量,选择创建变量。

提示: 所有变量字符串均支持JS语法的模板字符串,例如:, ${new Date().getTime()}

1)编辑config.json,设置变量。

如下图:此处设置了4个变量,分别为:username、password、test、dev

img

2)在录制页面,创建变量。

如下图所示,在录制页面,点击使用变量,弹出使用变量弹窗,使用方式选择为插入变量,变量名,点击添加变量,即可设置变量。

img

img

(2)更新变量,在录制页面,点击使用变量,弹出使用变量弹窗,使用方式选择为更新变量。
选择想要更新的变量名username,选择取值方式(与断言方式一致,为12种类型),取值正则,即可更新已有变量。

img

(3)使用变量,在录制页面,点击使用变量,鼠标定位需要插入变量的DOM,弹出使用变量弹窗,使用方式选择为插入变量
选择想要插入的已有变量名username,页面自动展示username相关信息。

img

鼠标定位需要插入变量的DOM为Email的输入框,点击使用变量框的确认按钮,变量添加成功。在输入框中插入该变量username

img

插入变量的DOM,若要添加断言,可使用变量字符串:

img

执行JS

在录制页面,点击执行JS按钮,可输入一段js代码,并执行,例:document.title=”test”

img

输入js代码后,点击确认,浏览器会立即执行该js代码,如下图,title更改为test。

img

添加延迟

在录制页面,点击添加延迟按钮,可在录制过程中添加延迟时间,在添加延迟弹框中,输入延迟时间,并执行,默认为1000ms。

img

在脚本中设置延迟

1
2
3
4
//等待
it('sleep: 3000', async function(){
await driver.sleep(3000);
});

脚本跳转

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

img

脚本中设置跳转的方法

1
callSpec('test/脚本名称.js')

img

控制台显示
img

上传文件

UI Recorder仅支持Native文件上传, 不支持FLASH上传
直接点击“选择文件”按钮或点击“Upload file”, 占位按钮必需要用role或data-role标注为upload

img

上传的文件必需保存在/uploadfiles/文件夹中。

img

测试数据和脚本分离

demo中以json来管理测试数据

img

img

脚本修改

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101

//(一)Web
//打开页面
it('url: http://adminpre.alspark.cn/#/login', async function(){
await driver.url(_('xxxxxxx'));
});

//'xxxxxxx' 是一个网页地址,例如http:”www.baidu.com”

//向下滚动屏幕
it('scrollElementTo: #app div.app-iframe-container, 0, 539', async function(){
await driver.sleep(300).wait('#app div.app-iframe-container', 30000)
.sleep(300).scrollElementTo(0, 539);
});

//(0, 539)是滚动的幅度坐标

//置顶滚动屏幕
it('scrollElementTo: #app div.app-iframe-container, 0, 0', async function(){
await driver.sleep(300).wait('#app div.app-iframe-container', 30000)
.sleep(300).scrollElementTo(0, 0);
});

//假设从主窗口0点击某个按钮,弹出了一个子窗口1,当前同时存在主窗口0和子窗口1

//切换至子窗口1
it('switchWindow: 1', async function(){
await driver.sleep(500).switchWindow(1);
});

//关闭窗口
it('closeWindow: ', async function () {
await driver.closeWindow();
});

//切换到主窗口
it('switchWindow: 0', async function () {
await driver.sleep(500).switchWindow(0);
});

//0是主窗口、1是子窗口、之后打开的子窗口以此类推。

//切换到页面iframe
it('switchFrame: #iframe0201000000', async function(){
await driver.switchFrame(null)
.wait('#iframe0201000000', 30000).then(function(element){
return this.switchFrame(element).wait('body');
});
});


//切换出iframe 切到null即是且至主页面
it('switchFrame: null', async function(){
await driver.switchFrame(null);
});



//(二)Mobile

//点击
it('tap: //*[@resource-id="com.maimaiche.dms:id/start_button"]', async function(){
await driver.wait('//*[@resource-id="com.maimaiche.dms:id/start_button"]', 30000).sendElementActions('tap');
});


//输入账号
it('sendKeys: 15022676605', async function(){
await driver.sendKeys(_(`15022676605`));
});


//滑动
it('drag: 滑动欢迎页', async function(){
await driver.sendActions('drag', {fromX: 1016, fromY:1157, toX:245, toY:1134, duration: 0.73});
});


//三)通用
//等待
it('sleep: 3000', async function(){
await driver.sleep(3000);
});



//等待页面加载,断言是否出现页面加载错误或者超时等其他情况
it('waitBody: ', async function(){
await driver.sleep(500).wait('body', 30000).html().then(function(code){
isPageError(code).should.be.false;
});
});


//断言是否登录成功
it('expect: text, //*[@text="工作台"], equal, 工作台', async function(){
await driver.sleep(300).wait('//*[@text="工作台"]', 30000)
.text()
.should.not.be.a('error')
.should.equal(`工作台`);
});

注意事项与常见问题

1
2
3
4
5
6
7
注意事项:
(1)禁止直接手动修改地址栏中的URL
(2)禁止使用TAB切换焦点
(3)不要使用双击, WebDriver兼容性不好
(4)不要使用鼠标选择部分文本, WebDriver兼容性不好
(5)不要手动切换至背景窗口。(目前最新版貌似没有影响)
(6)不要点击非关键区域, 仅录制关键步骤,不然增加脚本长度

报告

在目录A下会自动生成一个mochawesome-report文件夹,报告格式有两种,一种html另一种json格式

img

img

故障排除

(1)【环境与安装】【待解决】Node 版本10.13、15 uirecorder 初始化安装依赖会报错
解决方案:请使用低与10.13、15版本的node,比如:10.8 版本支持uirecorder
https://nodejs.org/zh-cn/download/releases/

(2)【环境与安装】【已解决】报错SyntaxError: missing ) after argument list
解决方案:升级到NodeJs v7.10以上版本

(3)【环境与安装】【已解决】报错session not created exception from disconnected: unable to connect to renderer
解决方案:系统hosts文件中添加127.0.0.1 localhost

(4)【环境与安装】【已解决】已经存在旧版本部分文件,执行安装报错后,查看版本提示失败。
解决方法:
node删除文件,重新安装,重新配置node环境。

img

(5)权限不够报错

img

windows系统特性,需要手动授权C盘的ProgramFiles文件
如下图所示:勾掉只读,确定保存

img

(6)【环境与安装】【已解决】安装中提示编译失败 缺少websocket

解决方法:npm i websocket -g

img

(7)【环境与安装】【已解决】初始化页面卡住

img

解决方法:把node 卸载重装(v.10.8.0)

img

目前最新版node(v10.13)和最新版uirecorder(2.5.46)不兼容,需要安装node版本低于10.12版本。

(8)【环境与安装】【已解决】安装npm i selenium-sandalone -g 超时报错

解决方案:

①设置淘宝镜像
npm config set registry http://registry.npm.taobao.org/

②执行

【A】卸载之前安装 npm uninstall selenium-sandalone -g

【B】清缓存 npm cache verify

【C】重新执行安装 npm install selenium-standalone -g

img

(9)Selenium-standalone install 过一会报错

执行安装命令后

img

img

原因:设置淘宝镜像没有生效,从第一图看出还是在谷歌上面下载驱动,所以超时报错。

解决方案:

①将下载链接设置为淘宝镜像,执行:

1
set CHROMEDRIVER_CDNURL=http://npm.taobao.org/mirrors/chromedriver

②管理员账号权限下,执行:

1
npm info underscore  //生效设置

执行

1
selenium-standalone install --drivers.chrome.version=2.46 --drivers.chrome.baseURL=http://npm.taobao.org/mirrors/chromedriver

注意chromedriver版本号2.46要和你本地谷歌浏览器对应。
(chromedriver版本与chrome浏览器版本对应,参考:https://sites.google.com/a/chromium.org/chromedriver/downloads

img

③执行

【A】卸载之前安装 npm uninstall selenium-sandalone -g

【B】清缓存 npm cache verify

【C】安装 npm install selenium-standalone -g

【D】安装 selenium-standalone install

【E】安装 selenium-standalone start

(10)npm i 或npm install 提示不是内部命令

解决方案:

①系统环境变量NODE_PATH路径设置不正确

②系统环境变量PATH中 nodejs的路径设置不正确

(11)npm install uirecorder -g安装成功,但是执行uirecorder –version后提示不是内部命令或外部命令
解决方案:

①检查C:/ProgramFiles/nodejs/下是否有uirecorder.cmd文件

②检查系统环境变量NODE_PATH的路径,并通过文件夹打开进入到该路径下查看是否有uirecorder文件夹。

以上均没有的话,可能是你node安装位置和环境变量不一致。

(12)【web端】【已解决】报错ChromeDriverServices\nBuild
解决方案:

①浏览器驱动chromedriver.exe本版本与本地浏览器版本对应一致。

【A】chromedriver下载地址:
https://npm.taobao.org/mirrors/chromedriver/

【B】chromedriver与chrome版本对应地址:
https://sites.google.com/a/chromium.org/chromedriver/downloads

②下载一个独立的chromedriver并设置为本地系统全局变量。

img

(13)【web端】【已解决】selenium-standalone 服务未启动便开始录制。

img

(14)【web端】【已解决】web录制遇到切换至iframe如果手动更改,需要执行iframe切出,await driver.switchFrame(null);

(15)【web端】【已解决】web录制弹出子窗口,关闭子窗口会退出录制状态。因此子窗口在录制过程中不要关闭(一旦关闭,之前录的都不会保存)

img

(16)【web端】【已解决】web上传文件的附件需要放置在目录uploadfiles下。录制后的脚本会通过这个文件夹去查找是否有这个待上传的文件

img

脚本中读取的路径也是从uploadfiles目录中查找

img

(17)【web端】【已解决】web上传文件的附件需要放置在目录uploadfiles下。录制后的脚本会通过这个文件夹去查找是否有这个待上传的文件

(18)【web端】【已解决】web下载文件,浏览器使用chrome不会弹出保存文件弹窗,使用firefox会弹出保存文件弹窗,可以通过firefox设置页修改下载文件保存位置来解决。

(参考:https://jingyan.baidu.com/article/9f63fb9171e81bc8400f0e07.html)

(19)【web端】【已解决】默认录制等待时间最长30秒,有时下载步骤可能会超过30秒,可以修改脚本这边的等待时长,如下图所示:

img

(20)【移动端】【已解决】macaca server没有启动起来或者启动端口非4444

img

(21)【移动端】【已解决】macaca server没有启动,录制、回放都要开启macaca server 端口指向4444

macaca server –port 4444 –verbose

img

(22)【移动端】【待解决】无法输入中文(车码头APP 4S金融下单输入客户名称)

(23)【移动端】【待解决】移动端无法输入特殊符号。(车码头APP登录账号使用邮箱 )

(24)【移动端】【已解决】安装iOS .app测试包报错提示手动安装。(使用.app格式包)

img

iOS测试包必须是.app格式,如果使用.ipa会报这个错

解决办法:将.ipa改成.app格式。

①将.ipa格式后缀改成.rar或.zip

②解压

③进入文件夹,应该是一个.app格式的文件

④将这个.app格式的文件压缩成.zip

⑤重命名testapp.app.zip

img

中文手册

中文手册

声明

转载请注明出处:https://liyinchigithub.github.io/ 谢谢您的配合