基於UIAutomator+ChromeDriver模式(UIAutomator安卓原生引擎)
原理:native(原生)部分使用UIAutomator,webview部分使用ChromeDriver,兩者結合混搭,從而實現Hybrid自動化
一、第一種方案(針對可以修改源代碼基礎上操作)
1.准備android 4.4+ 版本以上的手機/模擬器(我安裝的是:nox_setup_v6.3.0.5_full.exe)
2.讓開發在app源代碼中將webview調試模式打開
webview.setWebContensDebuggingEnabled(true)
3.安裝UC開發者工具(定位web頁面元素信息工具)
自行百度下載https://plus.ucweb.com/download/#DevTool 安裝:
安裝成功后啟動:
打開頁面如下:
4.模擬器或者真機連接后,打開app內嵌的webview頁面或者打開百度網頁版如下:
注意:1.APP必須打開webview調試模式 2.模擬器/真機必須打開開發者選項中的USB調試模式(使用adb devices檢測到已連接設備)
二、 第二種方案(針對線上app無源碼修改權限並且root權限手機操作)
如果是第三方線上app,一般WebView debug開關都是關閉的,這就需要借助第三方的工具,才能將debug開關打開
解決方案:使用第三方的工具Xposed+WebViewDebugHook
Xposed是一個框架,能夠集成很多功能模塊,這些模塊能夠在不修改APK的情況下,修改APP的運行方式,這里我們需要WebViewDebugHook模塊來開啟APP的WebView debug模式
注意:使用這種方式的前提是手機必須root權限,如今的android系統獲取root權限越來越難,如7.0 8.0等等,使用這種方法也會失效!
1.因為需要root手機權限,本次使用模擬器來模擬實現,模擬器自帶root權限
2.安裝xposed_3.15.apk
打開:
稍等2分鍾:
安裝更新完成后提示要求超級權限點擊允許,然后提示重啟后生效
重啟模擬器打開xposed可以看到框架已經激活
3.安裝WebViewDebugHook.apk
點擊進來,勾選
重啟模擬器
4.打開58同城,本地服務驗證
(1)使用uiautomatorviewer.bat查看頁面,發現頁面是WebView類型,無法定位webview中的元素
(2)此時打開UC開發者工具(前提開啟USB調試,adb devices檢測到設備)
此時就可以定位WebView頁面元素了
三、第三種方案:(針對線上app無源碼修改權限並且沒有root權限手機操作,此次使用真機來測試)
1.安裝VitualXposed+WebviewDebugHook
下載地址參考:https://github.com/android-hacker/VirtualXposed/releases
//檢測設備已連接 C:\Users\Administrator\Desktop>adb devices List of devices attached * daemon not running; starting now at tcp:5037 * daemon started successfully W4FTOBY4NNAQU8 unauthorized //將安裝包推送到手機內存sdcard目錄 C:\Users\Administrator\Desktop>adb push D:\appium\apk\VirtualXposed_AOSP_0.17.3.apk /sdcard/ D:\appium\apk\VirtualXposed_AOSP_0.17.3.apk: 1 file pushed. 4.0 MB/s (8020099 bytes in 1.919s) C:\Users\Administrator\Desktop>adb push D:\appium\apk\WebViewDebugHook.apk /sdcard/ D:\appium\apk\WebViewDebugHook.apk: 1 file pushed. 0.5 MB/s (16330 bytes in 0.031s)
》首先安裝:VirtualXposed_AOSP_0.17.3.apk
打開默認安裝xposed
打開xposed查看當前模塊
2.假設此時需要對58同城app進行元素定位及自動化腳本編寫,此時我們需要將58同城安裝到虛擬環境VirtualXposed中去,同上步驟操作!
打開VirtualXposed >> 點擊屏幕 >> 添加應用 >>如果本機已安裝選擇克隆方式,如果未安裝選擇內存中的apk安裝 >> 依然選擇VIRTUALXPOSED安裝 >>安裝成功
3.開始定位元素
此時使用uiautomatorviewer.bat定位native元素,無法定位webview元素
這時候我們使用UC開發者工具定位WebView元素:
4.未完待續