1、uiautomator:前端
uiautomator是爲數很少的Android官方支持的自動化框架之一,uiautomator隨着Android版本發佈而更新。做爲基於控件的自動化框架,uiautomator的總體框架以及API簡單明瞭,發佈後受到好評,可是也有人認爲不支持resourcedid檢索空間不合理,隨後官方彌補了這一缺陷。java
2、uiautomator2:python
這裏要說的uiautomator2是一個python庫,用於Android的UI自動化測試,項目地址https://github.com/openatx/uiautomator2. 項目發源於xiaocong的uiautomator這個項目,新項目最大的改變要數原來手機必須數據線鏈接電腦的,可是使用了uiautomator2這個項目,就能夠用WiFi代替USB鏈接電腦了。簡單來講就是能夠不用數據線了。android
python-uiautomator2封裝了谷歌自帶的uiautomator2測試框架,提供便利的python接口,容許測試人員直接在PC上編寫python的測試代碼,操做手機應用,完成自動化git
3、uiautomator2工做原理:github
如圖所示,python-uiautomator2主要分爲兩個部分,python客戶端,移動設備瀏覽器
整個過程網絡
atx-agent
(守護進程), 隨後atx-agent
啓動uiautomator2服務(默認7912端口)進行監聽電腦安裝 adb、python-uiautomator二、app
設備安裝atx-agent:首先設備鏈接到PC,並可以adb devices
發現該設備。框架
# 從github下載atx-agent文件,並推送到手機。在手機上安裝包名爲`com.github.uiautomator`的apk
$ python -m uiautomator2 init
success
最後提示success,表明atx-agent初始化成功。其實這個命令就是在手機上安裝這5個東西minicap
、minitouch、
uiautomator_apk
、atx-agent
, uiautomator_apk
安裝了app-uiautomator.apk
和app-uiautomator-test.apk
兩個apk
minicap 用於手機的快速截圖
minitouch 用於遠程控制
app-uiautomator.apk (UiAutomator2服務,Toast)
app-uiautomator-test.apk (UiAutomator2服務)
atx-agent (能夠直接在安卓上運行的二進制程序)
python-uiautomator2鏈接手機的方式有兩種,一種是經過WIFI,另一種是經過USB。兩種方法各有優缺點。
WIFI最便利的地方要數能夠不用鏈接數據線,USB則能夠用在PC和手機網絡不在一個網段用不了的狀況。
使用WIFI鏈接
手機獲取到手機的IP,並確保電腦能夠PING通手機。手機的IP能夠在設置-WIFI設置裏面獲取到。
好比手機的IP是192.168.0.100
,鏈接設備的代碼爲
import uiautomator2 as u2
d = u2.connect('192.168.0.100')
使用USB鏈接
手機的序列號能夠經過adb devices
獲取到,假設序列號是123456f
,鏈接代碼爲
import uiautomator2 as u2
d = u2.connect_usb('123456f')
雖然很想用Android SDK內置工具uiautomatorviewer.bat
,可是運行uiautomator2的時候,uiautomatorviewer.bat
運行不起來,二者之間衝突太嚴重。
使用python-uiautomator2的兩個接口screenshot
和dump_hierarchy
這樣就不會有衝突問題了
安裝方法: pip install --pre weditor
使用方法:
首先運行python -m weditor
,以後瀏覽器會自動打開一個網頁 http://atx.open.netease.com
(注:這個網址僅提供一個前端,而python -mweditor
這個命令則本地開放了HTTP的接口,前端去跟本地的服務去通訊)
定位方式
d(resourceId="com.smartisanos.clock:id/text_stopwatch").click()
d(text="秒錶").click()
d(description="..").click()
d(className="android.widget.TextView").click()