微信小程序自動化測試填坑指南

發表于:2020-11-16 09:50  作者:繭城寒舍   來源:簡書

字體: | 上一篇 | 下一篇 |我要投稿 | 推薦標簽: 項目優化

  相信很多朋友開始做微信自動化測試都是根據這個官方文檔進行操作的。也相信很多朋友根據這個操作一步步操作下來,基本上都是失敗的。在這里,不得不吐槽一下寫這個文檔的兄弟,一些注意事項也沒有提示出來,等我真正跑起來,才發現坑這么大。
  測試腳本
const automator = require('miniprogram-automator')

describe('index', () => {
    let miniProgram
    let page

    beforeAll(async () => {
        miniProgram = await automator.launch({
        projectPath: '/Users/mac/Documents/project/miniprogram-demo/miniprogram/'
    })
    page = await miniProgram.reLaunch('/page/component/index')
    await page.waitFor(500)
}, 30000)
  
    afterAll(async () => {
        await miniProgram.close()
    })
  
    it('desc', async () => {
        const desc = await page.$('.index-desc')
        expect(desc.tagName).toBe('view')
        expect(await desc.text()).toContain('以下將展示小程序官方組件能力')
    })
})
  報錯圖
  第一個坑
Failed to launch wechat web devTools, please make sure http port is open
  在解決這個問題之前,請確認你已經把微信開發者工具-安全設置-服務端口打開,如下圖所示。若沒有,請打開:
  設置完成后,再次運行jest index.spec.js,嘗試是否成功,若依然報錯,則需要手動操作一次命令行腳本。具體步驟如下:
  1.啟動命令行工具并切換到 你本地微信開發者工具的命令行工具所在的目錄,具體地址如下圖所示。
  這里需要注意一下,如果你的安裝時修改過微信開發者的安裝目錄,在測試腳本index.spec.js中需要增加一個cliPath字段。如果沒有更改過,則不需要增加此字段。
beforeAll(async () => {
    miniProgram = await automator.launch({
        projectPath:'/Users/mac/Documents/project/miniprogram-demo/miniprogram/',
        cliPath: '你的cli目錄'
    })
},30000)
  2.在該目錄下,使用如下命令,手動開啟一次自動化:
cli auto --project /Users/username/demo --auto-port 9420
  如若成功,將會自動打開微信開發者工具,并工具的右上角會有類似于下圖的通知,工具會告訴你自動化端口已開啟。
  3.將此窗口關閉,再次運行測試腳本,此時應該不會再報"please make sure http port is open"錯誤了
  第二個坑
TypeError: Connot read property '$' of undefined
  這個錯誤如果熟悉jQuery的朋友,應該都很眼熟。從測試腳本里的代碼里也可以看出,這個錯誤是因為腳本運行時獲取不到使用了index-desc這個class的DOM節點。所以這個解決這個問題的步驟如下:
  如果測試項目用的也是官方文檔里介紹的小程序示例這個項目,請確定在正常情況下,可以看到正常顯示的小程序項目,如若下圖這種情況,請清掉全部緩存并選擇工具-構建npm,使項目直到顯示正常為止。
  如果能正常顯示小程序示例項目,請關閉當前窗口,并運行測試腳本。當測試腳本打開新的微信開發者工具窗口時,第一時間選擇工具-構建npm,已確保在測試腳本運行完,小程序已渲染完成。否則,慢一步的話,都會導致報這個錯。
  如若多次嘗試,均不能在測試腳本跑完前,使小程序渲染完成。可以考慮用以下增加一個字段--timeout,將等待啟動時間加長一下,可以改為更大的值。
beforeAll(async () => {
    miniProgram = await automator.launch({
        projectPath: '/Users/mac/Documents/project/miniprogram-demo/miniprogram/',
            cliPath: '你的cli目錄',
        timeout: 30000
    })
    },30000)
  最后的測試成功圖

  本文內容不用于商業目的,如涉及知識產權問題,請權利人聯系51Testing小編(021-64471599-8017),我們將立即處理。

評 論

論壇新帖

頂部 底部


建議使用IE 6.0以上瀏覽器,800×600以上分辨率,法律顧問:上海瀛東律師事務所 張楠律師
版權所有 上海博為峰軟件技術股份有限公司 Copyright©51testing.com 2003-2020, 滬ICP備05003035號
投訴及意見反饋:webmaster@51testing.com; 業務聯系:service@51testing.com 021-64471599-8017

滬公網安備 31010102002173號

51Testing官方微信

51Testing官方微博

掃一掃 測試知識全知道

日本av