掃二維碼與項(xiàng)目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
1. 前言

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:主機(jī)域名、雅安服務(wù)器托管、營銷軟件、網(wǎng)站建設(shè)、新和網(wǎng)站維護(hù)、網(wǎng)站推廣。
平常我們使用自動化主要是針對 App 端和 Web 端,另外還有兩種場景比較少用但是也很重要,分別是:瀏覽器、微信小程序。
[[317971]]
今天我們聊聊如何在微信小程序上進(jìn)行自動化操作。
2. 微信小程序
小程序內(nèi)嵌于微信內(nèi)部,頁面包含 Native 原生元素和 Web 元素,相當(dāng)于一個混合應(yīng)用。
并且,小程序 Web 部分是基于騰訊 X5 內(nèi)核開發(fā)的,也是一個特殊的 WebView。
那小程序如何做自動化呢?
主要方法包含:UiAutomator 原生、基于 WebView 、基于微信官方自動化 SDK
下面將這些方式逐一進(jìn)行說明
3. 原生
原生的自動化就是利用 UiAutomator2 捕獲到元素 UI 樹,然后利用元素屬性及層級關(guān)系及坐標(biāo)值來定位元素,執(zhí)行一系列自動化操作。
但是原生有一個缺點(diǎn),由于小程序基于 WebView,所以元素定位符缺失,很多屬性包含:content-desc、resource-id 不存在。
雖然利用這種方法來進(jìn)行元素定位存在一定難度,但是還是可以利用元素的層級關(guān)系來補(bǔ)充這個缺點(diǎn)。
4. WebView
網(wǎng)絡(luò)上大部分的教程都是基于 WebView 來完成的自動化。
首先,需要打開微信的調(diào)試功能,文件傳輸助手中輸入:debugx5.qq.com 進(jìn)入,勾選上 :打開 TBS 內(nèi)核 Inspector 調(diào)試功能。
接著,在 Chrome 上輸入下面的命令進(jìn)行到設(shè)備和頁面管理頁面
chrome://inspect/#devices
點(diǎn)擊對應(yīng)的頁面項(xiàng),即能在開發(fā)者工具內(nèi)展示小程序目標(biāo)頁面完整的 HTML 元素信息。
自動化的操作就很簡單了。比如使用 Appium 的話,直接將對應(yīng)的小程序發(fā)送到文件發(fā)送助手中,作為自動化開始的入口。
切換到小程序所有的 Context ,最后,利用 Css 選擇器去選擇網(wǎng)頁元素進(jìn)行一系列自動化操作。
需要說明的是,這種方式在微信 7.X 后,默認(rèn)已經(jīng)無法基于 WebView 完成自動化操作了,這個可以降低 ChromeDriver 的版本來對應(yīng)微信 x5 內(nèi)核的版本。
5. 官方 SDK
微信官方提供了小程序自動化 SDK,作為一款標(biāo)準(zhǔn)的測試框架,支持真機(jī)和模擬器。
如果是自己公司開發(fā)的小程序,完全可以配置小程序開發(fā)者工具,利用官方提供的 API 編寫簡單的腳本,指向項(xiàng)目地址,借助 npm 命令完成自動化操作。
如果是第三方小程序,這種方式就不適合了。
6. 對比
上面提到的小程序自動化的 3 種方式,各有優(yōu)缺點(diǎn)。
如果是微信小程序源碼,建議使用官方 SDK 完成小程序的自動化,否則可以選擇原生和 WebView 中的一種。
另外,使用 WebView 做小程序的自動化對 ChromeDriver 的版本及 x5 內(nèi)核版本有要求,需要保證統(tǒng)一。

我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流