背景
隨着現在移動端設備的硬件性能的提高,現在web頁面的體驗逐漸變得可以接受,現在很多的應用都采用的Hybrid開發模式,一方面有利用了原生設備的API的優勢(性能好、用戶體驗好),另一方面利用了web開發的優勢(跨平台,開發成本低)。比如微信、QQ、58同城、美團、愛奇藝等等應用都是采用的Hybrid開發模式。
Hybrid應用如何去做自動化呢?
Hybrid是native嵌套了web,對於native頁面,我們可以采用原生的自動化框架UIAutomator/XCUITest,而對於web頁面,我們可以采用ChromeDriver,兩者相結合完成自動化測試。現在流行的說法是移動端內嵌的web可以稱為H5,雖然嚴格意義上來說H5不等同web。為了實現H5頁面的自動化,其中H5頁面的調試開關我們是必須要打開,否則通過inspector元素探測工具是定位不到頁面的元素信息。
有源碼的應用
針對公司內部團隊開發的App,我們可以要開發直接在源代碼中加上如下的代碼,然后重新編譯打一個debug包
if (0 != (getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE)) {
WebView.setWebContentsDebuggingEnabled(true);
}
無源碼的應用
對於無源碼的應用,如第三方線上App。這里分成兩種情況,其一:App使用的是系統原生webview,如58同城、檸檬班App,其二:App使用的是經過定制過的webview,如微信、QQ騰訊系應用使用的是定制過的X5內核。
原生webview應用(root狀態)
准備工具
- Xposed APK包
- WebviewDebugHook APK包
此種方法需要提前對手機進行root,至於如何root可以在對應的機型論壇搜索解決方案,每家手機的方案都不同。如果是模擬器,一般模擬器都是支持root的,如夜神:
安裝xposed框架到系統中,激活Xposed框架
安裝WebviewDebugHook到系統中,在Xposed中選擇模塊勾選
以58同城舉例,打開之后進行到H5頁面,即可點擊inspect探測到當前H5頁面信息
原生webview應用(非root狀態)
准備工具
- VirtualXposed APK包
- Xposed APK包
- WebviewDebugHook APK包
安裝VirtualXposed到系統中,此應用的工作原理類似於應用分身功能,會將應用安裝到一個獨立的環境當中。
將要調試的應用、WebviewDebugHook、Xposed 安裝到VirtualXposed中,勾選模塊管理->WebviewDebugHook
在VirtualXposed中打開58同城
X5內核應用(微信、QQ)
針對微信版本在7.0以下,可以只需要在任意聊天窗口輸入debugx5.qq.com即可打開
針對微信版本在7.0+,微信有對H5開關做了調整,需要在聊天窗口輸入如下:
進入到搜一搜->搜索微信小程序->進入到小程序中,即可識別到到URL: