1.0.3 • Published 1 year ago

smartapp-automatorcloud v1.0.3

Weekly downloads
-
License
MIT
Repository
-
Last release
1 year ago

smartapp-automator

API 文档

smartapp-automator SDK 是为开发者提供的一套通过 Node.js 脚本操控小程序的方案,从而实现小程序自动化测试的目的。该分支主要为了方便在云手机服务器上搭建执行自动化的环境。

快速开始

运行环境配置

请根据你的电脑类型,按文档配置你的运行环境:Mac 电脑运行环境配置

安装

请在你的工程目录里运行以下命令,安装 smartapp-automator SDK:

$ npm i smartapp-automator --save

用法

smartapp-automator 对于曾经使用过其它 UI 测试框架的同学来说,会觉得非常的熟悉。

你可以创建一个设备实例打开小程序,然后使用 smartapp-automatorAPI 操控它。

示例 - 用 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 仅支持端控件元素输入,能否支持小程序元素输入

再看看。