README
smartapp-automator
API 文档
smartapp-automator
SDK 是为开发者提供的一套通过 Node.js
脚本操控小程序的方案,从而实现小程序自动化测试的目的。
快速开始
运行环境配置
请根据你的电脑类型,按文档配置你的运行环境:Mac 电脑运行环境配置
安装
请在你的工程目录里运行以下命令,安装 smartapp-automator
SDK:
$ npm i smartapp-automator --save
用法
smartapp-automator
对于曾经使用过其它 UI 测试框架的同学来说,会觉得非常的熟悉。
你可以创建一个设备实例打开小程序,然后使用 smartapp-automator
的 API
操控它。
示例 - 用 Android 设备跳转 CTS 小程序首页并进行截屏:
我们将该脚本命名为 screenshot.js
const automator = require('smartapp-automator');
automator.launch({
deviceType: 'android', // 要驱动的真机设备类型,这里为 Android 手机
deviceId: '37bf1128' // 要驱动的真机设备 ID,Android 手机的 serial 号,可通过 `adb devices` 获取
}).then(async device => {
let smartapp await device.newSmartapp(
'baidu', // 驱动运行小程序的宿主 APP 的代号,`baidu` 为百度 APP 的代号
'VPKGrAKy7fQfAG9scxLPQV10OeGErWmp_dev1' // 要驱动运行的小程序的 AppKey,可通过开发者工具预览打包功能获取
);
await smartapp.goto(); // 跳转小程序首页
await smartapp.screenshot(); // 截屏
await device.close(); // 关闭设备实例
});
资源文件
测试
# 仅支持使用 Mac 电脑和 Android 设备运行测试
$ npm run test
如何贡献
- 提交 pr 的时候,新增的每一个能力,都需要在
./docs
下完善文档,否则不予合入
讨论
Q: 谁在维护 smartapp-automator ?
百度小程序测试中台团队在维护着这个 SDK。
Q: 在执行输入操作的时候,突然杀死进程,即使拔除 usb 线,iOS 仍然会以 1 字/秒的速度键入字符,怎么解决?
这个「灵魂输入事件」,我觉得,可以通过捕获杀死进程事件,强制等待 input 操作结束,来稍加避免该情况发生。 发生该情况的时候,也只能等待键入完成/重启手机了。
Q: Android 在运行一段时间后(5-10 天),atx-agent 会频繁挂掉,怎么解决?
Android 设备上的进程死掉,一般是因为 OOM,Android 系统对内存的使用几无限制,当内存被各类 APP 占用后,低优先级的进程就会被优先干掉。 一个不成熟的建议:删除跑任务设备上的其它 APP。
Q: DOM 中 attribute 和 property 是啥区别?
attribute 是由 HTML 定义的,出现在 HTML 标签内的属性都是 attribute,总是 string 类型。 property 是 js 的 DOM 对象的属性,即 document.getElementById('go').xxx 的 xxx,xxx 可以是任意类型。 但注意,w3c 标准定义的 attribute 和 property 是 1:1 对应关系,如:id, class(对的 className,因为 js 里 class 是关键字), title 等。 一般,property/attribute 改变会改变对应的 attribute/property,但不一般情况如 input 的 value 改变其 property 的时候,attribute 不变。 一般,我们使用 property,因为比较快。
Q: iOS wda 仅支持端控件元素输入,能否支持小程序元素输入
再看看。