安裝環(huán)境
按照官方文檔:developers.weixin.qq.com/miniprogram/dev/devtools/auto/quick-start.html 進(jìn)行配置:
執(zhí)行命令,安裝sdk:
npm i miniprogram-automator --save-dev
之后開啟工具安全設(shè)置中的CLI/HTTP調(diào)用功能。關(guān)閉狀態(tài)無法通過腳本對小程序進(jìn)行自動化操作;

手動編寫腳本
1. 自定義腳本
我們可以使用jest或者直接通過node環(huán)境來執(zhí)行腳本,以下例子以node環(huán)境舉例:
引入 SDK 開始編寫控制腳本,在項目中任意路徑新建一個js文件,如index.js,填充以下內(nèi)容
const automator = require('miniprogram-automator')
// 根據(jù)路徑喚起開發(fā)者工具
automator.launch({
cliPath: '/Applications/wechatwebdevtools.app/Contents/MacOS/cli',
projectPath: '/Users/XXX/XXX/XXX/wechat-app',
}).then(async miniProgram => {
// 開發(fā)者工具被喚醒,接下來執(zhí)行自定義操作
const page = await
miniProgram.reLaunch('/mps/zfsy/plugin/zufang/pages/home/home')
await page.waitFor(500)
})
可能遇到問題:開發(fā)者工具未安裝到默認(rèn)位置,cliPath路徑報錯
UnhandledPromiseRejectionWarning: Error: Failed to launch wechat web devTools, please make sure cliPath is correctly specified
解決:mac找到微信小程序開發(fā)工具,右鍵顯示包內(nèi)容,進(jìn)入Contents/MacOs/找到 cli文件并將其選中,快捷鍵 :command+option+c復(fù)制路徑,

之后執(zhí)行該文件
node index.js
就會發(fā)現(xiàn)微信開發(fā)者會啟動并跳轉(zhuǎn)到/mps/zfsy/plugin/zufang/pages/home/home頁面;錄得視頻太大了貼不上。。全靠腦補(bǔ);
上面是通過微信sdk的automator.launch來創(chuàng)建端口并進(jìn)行連接,我們還可以通過命令行來手動開啟端口+automator.connect達(dá)到該效果。
按照上文說到的路徑進(jìn)入 /Applications/wechatwebdevtools.app/Contents/MacOS/中,之后執(zhí)行以下代碼開啟自動化
// 12345 是隨便指定的端口
./cli auto --project /Users/XXXX/XXXX/wechat-app --auto-port 12345
官網(wǎng)直接cli了,但是mac不可以??!需要./cli 才可以??!一大坑
執(zhí)行命令后會自動喚起你的開發(fā)者工具并提示?。?!


啟動之后就可以執(zhí)行我們其他的腳本啦,舉個例子下面代碼判斷的代碼篩選項是否為4個
const automator = require('miniprogram-automator')
automator.connect({
wsEndpoint: 'ws://localhost:12345' //這里就是我們通過cli開啟的端口
}).then(async miniProgram => {
await page.waitFor(500);
//獲取組件filter-ftoy
const filter = await page.$('filter-ftoy')
//獲取組件filter-ftoy中class為filter-tab-item的元素
const filterTabs = await filter.$$(".filter-tab-item")
await miniProgram.pageScrollTo(500)
if(filterTabs.length!==4){
console.log("error:篩選項渲染成功")
return;
}
})
當(dāng)然我們也可以安裝jest,使腳本提示更友好:
npm i miniprogram-automator jest
npm i jest -g
之后執(zhí)行
const automator = require('miniprogram-automator')
describe('index', () => {
let miniProgram
let page
beforeAll(async () => {
miniProgram = await automator.connect({wsEndpoint: 'ws://localhost:12345'})
}, 30000)
// 用例
it('篩選項個數(shù)', async () => {
const filter = await page.$('filter-ftoy')
const filterTabs = await filter.$$(".filter-tab-item")
expect(filterTabs.length).toBe(4)
})
// ....
afterAll(async () => {
// await miniProgram.close()
})
})

2. 自動化錄制用例并生成腳本
除開手動寫測試腳本以外,我們也可以進(jìn)一步使用開發(fā)者工具來實現(xiàn)錄制用例后自動開跑:
在菜單欄找到工具/自動化測試,在菜單欄上方點擊開始錄制,之后按照自己的邏輯進(jìn)行步驟錄制;

隨著你的點擊滾動等操作,在下圖畫圈處會有同步的記錄;

并在會在你的項目中新建minitest文件夾(默認(rèn)可在project.config.json中修改”textRoot“),其中保存的是錄制好的用例對應(yīng)的json文件;

錄制完成后,可以針對某一步驟進(jìn)行修改,比如,我把點擊的篩選項文字從價格改為并不是價格,查找方式改為全局文字匹配;

之后我們點擊菜單欄上的回放,此時將自動化重新跑一遍剛才錄制的用例;

此時發(fā)現(xiàn)有報錯,因為小程序中點擊的就是帶有
價格字樣的篩選項,并不是我們設(shè)定的并不是價格,所以報錯了;這種自動化可以幫助我們便捷的跑跑主流程,快速大范圍進(jìn)行回歸;
這里的用例也可以導(dǎo)出,導(dǎo)出的是個zip包,里面有jest腳本,可二次開發(fā);
微信的云測
地址: developers.weixin.qq.com/miniprogram/dev/devtools/minitest/cloud_problem.html
可將我們項目中錄制的用例進(jìn)行上傳,有機(jī)器人自動遠(yuǎn)程幫跑;還可以進(jìn)行測試計劃的管理等,也很方便。 在微信開發(fā)者工具提供的自動化測試內(nèi),可以選中某個用例并且將其導(dǎo)出成jest腳本或者json。

再將其中的json導(dǎo)入到云測,進(jìn)行數(shù)據(jù)互通;
