uirecorder
Version:
Tool for record ui test case
114 lines (81 loc) • 8.39 kB
Markdown
UIRecorder PC标准入门
===================
如何录制正常网页操作步骤?
-------------------
1. 首先安装UIRecorder,这个请参考项目介绍首页:[https://github.com/alibaba/uirecorder](https://github.com/alibaba/uirecorder)
2. 创建新目录并进入,然后初始化UIRecorder工程目录:`uirecorder init`, 根据具体情况输入相关的参数,几个回车后,我们的准备工作就结束了,这里详细介绍下几个参数分别是什么作用
1. `Path扩展属性配置,除id,name,class之外`: 此参数,用来定义网页DOM中哪些属性可以用来定位我们的控件,默认值已经包括了主流的属性,一般情况下不需要修改
2. `属性值黑名单正则`:网页中当某些属性值是随机或者不稳定的时候,我们可以通过这个配置来忽略那些属性值,从而保证我们的自动化脚本稳定性,例如我们可以这样配置:`/attr_name_\d+/`,如果需要配置多个属性,可以这么写:`/attr1_\d+|attr2_\d+|/`,详细更多的正则教程请自行搜索
3. `class值黑名单正则`:某些场景下,class属性的值会干扰自动化录制,比如当鼠标移到某个控件上时会动态的添加一个class样式名称,就可能会被录制到PATH中,从而导致自动化无法稳定重放。此时就可以将那个class名称加到黑名单中,例如:`/class_name/`,详细值的配置请参考属性值黑名单
4. `断言前隐藏`:某些业务场景下,会在最上层显示一层透明的div,用来实现一些高级的富应用需求,会导致无法直接断言透明div下方的控件。此种场景下,可以将透明div的PATH配置在此属性中,即可实现在断言时自动移除透明的div,断言后再自动恢复
5. `WebDriver域名或IP`:WebDriver执行机的IP地址,默认是指向本地,如果有部署grid执行机集群,可以指向对应的执行机集群IP
6. `WebDriver端口号`:WebDriver端口号,一般情况下是4444端口号,不需要修改
7. `需要同时测试的浏览器列表`: 需要同时测试的浏览器列表,例如:chrome, firefox, ie 11,可以根据本地或远程执行机集群所支持的浏览器类型自行输入
3. 输入`uirecorder`,会要求输入相关的几个参数, 我们这里介绍下几个参数的意义
1. `测试脚本文件名`: 录制后保存到哪个文件,支持直接输入目录名,例如:test/aaa.spec.js,我们要求脚本文件名必需是xxx.spec.js,否则会导致无法定位到
2. `打开同步校验浏览器?`:校验浏览器是用来实现边录边跑,同步的校验录制的步骤是否能够稳定的重现,避免录制后进行大量的调试。从而实现一次录制,即可稳定重现,极大的提高成功率和稳定性。默认值已经是打开,按回车即可。
3. `浏览器大小`:默认值是1024x768,如果对于浏览器窗口大小没有特殊要求,用默认值回车即可。如果某些场景要求特定大小,那么可以自己指定特定的大小,例如:1024x768
当以上4个参数确认后,我们将看到一个黑背影的开始界面。此时,我们仅需输入需要测试的目标网址,即可正式开始我们的录制之旅。
常规录制说明:
1. 对于常规的网页操作行为,我们没有任何学习门槛,按照正常的网页操作步骤进行即可,UIRecorder会在后台默默的记录并生成自动化脚本
2. 除了鼠标的悬停操作,我们需要通过录制面板,在目标控件上手工添加一个悬停。例如,二级菜单就需要鼠标移到一级菜单后,才能在二级菜单进行点击操作。
3. 如何录制三级甚至四级的多级菜单?
按住`Ctrl/Command键`,然后点击`添加悬停`按钮,即可进入持续悬停模式。进入此模式后,每次添加悬停后,会持续处于事件拦截状态,不用担心鼠标移动会导致二级菜单缩回,然后就可以持续的添加更多的悬停操作。
4. 如何在悬停后断言?
进入`持续悬停模式`后,同时也可以解决悬停后的断言问题。如果希望结束`持续悬停模式`,请再次点击`结束悬停`按钮,即可退出此模式。
如何添加断言?
-------------------
当进行一系列操作后,往往我们需要添加一系列的断言,用来判断操作后的结果是不是正确的。
在操作录制后,我们仅需点击录制面板上的`添加断言`按钮即可,点击按钮后,我们可以发现有以下几个选项:
1. `延迟时间`:用来设置本次断言延迟一定的时间后才执行,一般用来解决某些异步操作时间不确定的问题。
2. `断言类型`:我们提供子丰富的断言类型,不同的控件类型要选择合适的断言类型,这里针对每个断言类型进行介绍
1. `val`: 断言输入框的值
2. `text`: 断言文本的内容
3. `displayed`: 断言控件是否处于显示状态
4. `enabled`: 断言当前控件是否可用(没有禁用)
5. `selected`: 断言当前控件是否打勾选中了
6. `attr`: 断言当前DOM的属性值
7. `css`: 断言当前DOM的CSS值
8. `url`: 断言当前网页的URL地址
9. `title`: 断言当前网页的title标题
10. `cookie`: 断言当前网页的cookie值
11. `localStorage`: 断言当前网页的localStorage
12. `sessionStorage`: 断言当前网页的sessionStorage
13. `alert`: 断言弹出的alert窗口的提示文本
14. `jscode`: 在浏览器端执行自定义的JS代码,断言JS代码的返回值
15. `count`: 断言控件匹配的数量
16. `imgdiff`: 断言当前控件的图片差异,可以自定义图片差异的百分比
3. `断言DOM`:当前DOM控件的PATH,录制时自动生成,也可以自己进行修改,以在某些特殊场景下进行微调
4. `比较方式`: 针对读取到的值,如何进行断言,我们解释下每个比较方式
1. `equal`: 相等
2. `notEqual`: 不相等
3. `contain`: 包含,目标值包含另外一个值
4. `notContain`: 不包含
5. `above`: 大于,用于断言数值大于某个值
6. `below`: 小于,用于断言数值小于某个值
7. `match`: 匹配正则,一般用于高级断言,例如:/aaa\d+bbb/
8. `notMatch`: 不匹配正则
5. `断言结果`: 判断的目标值
其它录制功能介绍
--------------------
1. `属性开关`:对于某些特殊场景,可以通过灵活的开启或关闭属性项,不同步骤选择不同的PATH生成策略,例如:某些控件不太适合用文本定位,就可以临时先关闭`text`属性项
2. `属性值黑名单`: 可以即时配置属性值黑名单,立即生效,用来解决随机属性值的问题,修改后记得按一下回车键,让变更立即生效,格式如下:`/aaa_bbb_\d+/`
3. `执行JS`: 可以用来在浏览器端执行一些扩展功能,例如:`document.title=123;`
4. `添加延迟`:某些操作后,会发起异步请求,异步请求的完成时间不太确定时,可以通过添加延迟时间提升稳定性,时间单位是毫秒
5. `脚本跳转`:用来跳到新的URL,或者跳到另外一个脚本,一般情况下用来引用公共脚本,例如登录操作
如何部署WebDriver服务?
----------------
1. 本地部署Selenium standalone server:
新开控制台窗口然后执行
> `npm run server`
2. Selenium Grid: [https://github.com/SeleniumHQ/selenium/wiki/Grid2](https://github.com/SeleniumHQ/selenium/wiki/Grid2)
3. F2etest: [https://github.com/alibaba/f2etest](https://github.com/alibaba/f2etest)
录制后如何运行脚本?
--------------------
1. 运行所有脚本: `source run.sh` ( Linux|Mac ) 或 `run.bat` ( Windows )
2. 运行单个脚本: `source run.sh sample/test.spec.js` ( Linux|Mac ) 或 `run.bat sample/test.spec.js` ( Windows )
如何临时基于本地浏览器调试脚本?
----------------
对于常态基于远程执行机跑的场景下,出现问题时,往往需要在本机进行调试,我们可以通过设置环境变量,临时基于本机的浏览器来调试。
1. `export webdriver=127.0.0.1:4444` 或 `set webdriver=127.0.0.1:4444` (Windows)
提示:端口号是非必填项,例如:`export webdriver=127.0.0.1`