史上最全最新微信小程序自動化教程


1  背  景        
微信小程序作為現在流行的一種應用載體,很多小伙伴都有對其做自動化測試的需求,由於騰訊系 QQ、微信等是基於騰訊自研 X5 內核,不是谷歌原生 webview,所以調試會有些許差異(現在很多 app 產品也開始流行采用 X5 內核作為其內嵌 Web 瀏覽服務)。

 

需要注意的是 X5 內核只支持手機,模擬器是不支持的。

 

我們的教程以最主流的 Appium 自動化技術為例講解如何對微信小程序做自動化測試。

 

2  准 備 工 作       

>>>  step1:打開微信小程序 webview 調試開關


聊天窗口輸入如下兩個 URL:

 

http://debugmm.qq.com/?forcex5=true

http://debugx5.qq.com

 

圖片

 

在第二個 URL 打開的頁面中勾選:

 

圖片

 

>>>  step2:安裝 UC 開發者工具並識別小程序頁面元素信息

 

Chrome 自帶的 inspect 工具識別小程序/內嵌 Web 頁面需要訪問外網,很多小伙伴不具體這樣的條件,所以推薦大家安裝 UC 開發者調試工具,這樣不用 FQ 也可識別到小程序的頁面元素信息。

 

下載地址:https://dev.ucweb.com/

 

安裝完之后如果有小伙伴發現識別不了可進行如下設置:

 

圖片

 

進入微信主頁面-> 向下滑動展開小程序列表-> 點擊對應小程序(這里以檸檬班軟件測試為例)

 

圖片

 

這里我們即可使用工具獲取元素的信息並寫出定位表達式了,比如定位到【課程】這個元素://a[contains(text(),"課程")]

 

>>>  step3:確認微信小程序對應的進程名


微信有很多的進程,我們要確定當前小程序是位於哪個進程中(當前查詢到的是 com.tencent.mm:appbrand0):

 

圖片

 

這里需要注意:進行該操作的時候最好重啟微信(在后台清理應用重新點擊啟動),目的是為了保證被測小程序在微信后台只有一個,跟代碼執行過程保持同步。

 

>>>  step4:chromeDriver 驅動匹配


小程序本質上還是 Web 頁面,我們可以通過 chromeDriver 驅動小程序頁面執行,小程序因為使用的 X5 內核是經過騰訊二次開發過之后的,所以 chromeDriver 驅動與 webview 版本匹配並不嚴格按照官方 Appium 說明的匹配規則,這里試驗了幾個版本的 chromeDriver,發現 V2.40 版本的 chromeDriver 是比較合適的:

 

下載地址:https://npm.taobao.org/mirrors/chromedriver

 

下載完畢后解壓,將 chromeDriver 替換到 Appium 的自帶 chromeDriver 所在路徑:

 

Appium.exe所在路徑\resources\app\node_modules\appium\node_modules\appium-chromedriver\chromedriver\win

 

3  編 寫 腳 本       

這里以 Java 語言為例,我們使用 Maven 項目管理工具在項目中引入 Appium 的客戶端庫

<dependency> <groupId>io.appium</groupId> <artifactId>java-client</artifactId> <version>7.0.0</version></dependency>

 

Appium 啟動 App 的常規代碼就不再贅述了,這里需要注意的是 Appium 啟動微信做小程序自動化測試除了常規的配置如:deviceName、platformName、appPackage、appActivity 之外,還需添加如下配置參數:

 

// 支持X5內核應用自動化配置desiredCapabilities.setCapability("recreateChromeDriverSessions", true);ChromeOptions options = new ChromeOptions();//com.tencent.mm:appbrand0為前面通過adb命令查詢到的小程序進程名,同之前保持一致options.setExperimentalOption("androidProcess", "com.tencent.mm:appbrand0");desiredCapabilities.setCapability(ChromeOptions.CAPABILITY, options);// 初始化會默認將chrome瀏覽器打開,需要將Browser置為空desiredCapabilities.setBrowserName("");

 

進入到小程序可以通過常規方式:

啟動微信進入到主頁-> 下滑展開小程序列表-> 點擊對應小程序

進入到小程序之后我們需要切換 context:

 

driver.context("WEBVIEW_com.tencent.mm:appbrand0");

 

划重點!!!切換 context 之后如果直接定位元素會發現元素是定位不到了,這是因為小程序打開之后會存在三個 Web 窗口:

 

圖片

所以我們這里一定要記得切換(通過 handle 句柄):

 

//需要找到正確的web窗口--騰訊課堂檸檬班軟件測試(切換句柄)//獲取所有的窗口句柄Set<String> allHandles = driver.getWindowHandles();for (String handle:allHandles){ //通過窗口的標題來判斷 if(driver.getTitle().equals("騰訊課堂檸檬班軟件測試")){ break; }else { //切換句柄 driver.switchTo().window(handle); }}

 

之后我們就可以通過常規的方式去定位/操作元素了:

 

driver.findElement(By.xpath("//a[contains(text(),\"課程\")]")).click();

 

4  總  結       

 

微信小程序與普通的 Hybrid 應用做自動化測試存在很多的區別,不管是 webview 調試開關的開啟方式,還是小程序需要的特殊啟動參數配置,以及 chromeDriver 與小程序 webview 的版本匹配,種種因素導致微信小程序執行並不是很穩定,而且切換 webview 速度也比較慢。隨着微信版本的迭代更新,可能一些配置會失效。

 

目前微信自己有發布了支持小程序自動化測試的框架 Minium,但坑比較多。第三方的一些圖像識別框架也可以支持小程序的自動化測試,比如網易的 Airtest,上手簡單,但准確性和穩定性不高。總的來說目前市面上並沒有一款足夠好用、足夠穩定的微信小程序自動化測試的框架/工具。當然,隨着后續技術的升級,應該會有很多的優秀工具涌現出來。

 

轉:https://mp.weixin.qq.com/s/P8U9CedpJn2cZqsX_E6xRw


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM