快速入门 运行环境 安装 Node.js 并且版本大于 8.0基础库版本为 2.7.3 及以上开发者工具版本为 1.02.1907232 及以上安装
使用小程序自动化 SDK,直接执行以下命令:
npm i miniprogram-automator –save-dev
使用
首先开启工具安全设置中的 CLI/HTTP 调用功能。
必须开启以上选项,否则 SDK 将无法正常启动工具自动化功能。
然后直接引入 SDK 开始编写控制脚本,参考下边例子:
const automator = require’miniprogram-automator’)
automator.launch{
cliPath: ‘path/to/cli’, // 工具 cli 位置,如果你没有更改过默认安装位置,可以忽略此项
projectPath: ‘path/to/project’, // 项目文件地址}).thenasync miniProgram => {
const page = await miniProgram.reLaunch’/page/component/index’)
await page.waitFor500)
const element = await page.$’.kind-list-item-hd’)
console.logawait element.attribute’class’))
await element.tap)
await miniProgram.close)})
最后执行 node path/to/script 即可看到输出结果。
脚本示例
小程序自动化 SDK 本身不提供测试框架。这意味着你可以将它与市面上流行的任意 Node.js 测试框架结合使用,以此来达到编写小程序测试用例的目的。接下来将使用 Jest 测试框架来编写一个实际的小程序自动化测试。
测试对象
这里以小程序示例为测试对象,从 GitHub 上将小程序示例的源码下载到本地,然后打开小程序工具,将该项目导入进去。
初始化
新建文件夹 miniprogram-demo-test 放置测试代码,执行以下命令安装依赖:
npm i miniprogram-automator jestnpm i jest -g
按照快速开始中的使用说明安装符合要求的开发者工具版本及打开安全设置 CLI/HTTP 调用功能后就可以开始编写脚本了。
脚本编写
现在我们准备为小程序示例的首页编写测试用例,如下图所示:
创建完测试文件 index.spec.js 后,首先要做的是:
启动并连接工具重新启动小程序到首页断开连接并关闭工具
对应脚本如下:
const automator = require’miniprogram-automator’)
describe’index’, ) => {
let miniProgram
let page
beforeAllasync ) => {
miniProgram = await automator.launch{
projectPath: ‘path/to/miniprogram-demo’
})
page = await miniProgram.reLaunch’/page/component/index’)
await page.waitFor500)
}, 30000)
afterAllasync ) => {
await miniProgram.close)
})})
工具项目窗口启动初次编译需要一定时长,Jest 默认 5 秒超时太短,需修改。
1. 测试顶部描述 通过 .index-desc 选择器获取目标元素目标元素应该是个 view 组件目标元素应该包含有“以下将展示小程序官方组件能力”的文本
对应脚本如下:
it’desc’, async ) => {
const desc = await page.$’.index-desc’)
expectdesc.tagName).toBe’view’)
expectawait desc.text)).toContain’以下将展示小程序官方组件能力’)})
2. 测试列表项 获取列表元素集合目标元素集的个数应该是 8 个第一个列表元素的标题应该是“视图窗器”
对应脚本如下:
it’list’, async ) => {
const lists = await page.$$’.kind-list-item’)
expectlists.length).toBe8)
const list = await lists[0].$’.kind-list-item-hd’)
expectawait list.text)).toBe’视图容器’)})
3. 测试列表项行为 点击列表标题应该展示或隐藏子列表点击子列表项应该会跳转到指定页面
对应脚本如下:
it’list action’, async ) => {
const listHead = await page.$’.kind-list-item-hd’)
expectawait listHead.attribute’class’)).toBe’kind-list-item-hd’)
await listHead.tap)
await page.waitFor200)
expectawait listHead.attribute’class’)).toBe
‘kind-list-item-hd kind-list-item-hd-show’,
)
await listHead.tap)
await page.waitFor200)
expectawait listHead.attribute’class’)).toBe’kind-list-item-hd’)
await listHead.tap)
await page.waitFor200)
const item = await page.$’.index-bd navigator’)
await item.tap)
await page.waitFor500)
expectawait miniProgram.currentPage)).path).toBe’page/component/pages/view/view’)})
脚本执行
编写完脚本后直接执行以下脚本:
jest index.spec.js
如果看到控制台输出以下信息,说明测试成功。
PASS ./index.spec.js 5.341s)
index
√ desc 18ms)
√ list 14ms)
√ list action 1274ms)
Test Suites: 1 passed, 1 total
Tests: 3 passed, 3 total
Snapshots: 0 total
Time: 6.378s
Ran all test suites matching /index.spec.js/i.
还未全部更新完还剩下下面那些,到时候在更新了。{公众号:软件测试学习资料}
3小程序自动化–真机自动化
4.1小程序自动化–api(automator)
4.2小程序自动化–api(miniprogram)
4.3小程序自动化–api(page)
4.4小程序自动化–api(element)
5小程序自动化–常用的自动化 SDK