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

背景

微信小程序做爲如今流行的一種應用載體,不少小夥伴都有對其作自動化測試的需求,因爲騰訊系 QQ、微信等是基於騰訊自研 X5 內核,不是谷歌原生 webview,因此調試會有些許差別(如今不少 app 產品也開始流行採用 X5 內核做爲其內嵌 Web 瀏覽服務)。java

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

咱們的教程以最主流的 Appium 自動化技術爲例講解如何對微信小程序作自動化測試。android

準備工做

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

聊天窗口輸入以下兩個 URLweb

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

X5內核調試專用頁npm


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

Chrome 自帶的 inspect 工具識別小程序/內嵌 Web 頁面須要訪問外網,不少小夥伴不具體這樣的條件,因此推薦你們安裝 UC 開發者調試工具,這樣不用 FQ 也可識別到小程序的頁面元素信息小程序

下載地址:https://dev.ucweb.com/微信小程序

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


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

微信有不少的進程,咱們要肯定當前小程序是位於哪一個進程中(當前查詢到的是 com.tencent.mm:appbrand0):

這裏須要注意:進行該操做的時候最好重啓微信(在後臺清理應用從新點擊啓動),目的是爲了保證被測小程序在微信後臺只有一個,跟代碼執行過程保持同步。

step3: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

編寫腳本

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

<dependency>

    <groupId>io.appium</groupId>

    <artifactId>java-client</artifactId>

    <version>7.0.0</version></dependency>

Appium 啓動 App 的常規代碼就再也不贅述了,這裏須要注意的是 Appium 啓動微信作小程序自動化測試除了常規的配置如:deviceNameplatformNameappPackageappActivity 以外,還需添加以下配置參數:

// 支持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 窗口:

 

728 x 309828 x 352

因此咱們這裏必定要記得切換(經過 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();

總結

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

目前微信本身有發佈了支持小程序自動化測試的框架 Minium,但坑比較多。第三方的一些圖像識別框架也能夠支持小程序的自動化測試,好比網易的 Airtest,上手簡單,但準確性和穩定性不高。總的來講目前市面上並無一款足夠好用、足夠穩定的微信小程序自動化測試的框架/工具。固然,隨着後續技術的升級,應該會有不少的優秀工具涌現出來。

PS:想要完整代碼的小夥伴能夠私信哦

相關文章
相關標籤/搜索