uiautomator2
uiautomator2是一個可以使用Python對Android設(shè)備進行UI自動化的庫咧虎。其底層基于Google uiautomator河狐,Google提供的uiautomator庫可以獲取屏幕上任意一個APP的任意一個控件屬性,并對其進行任意操作剿干,但有兩個缺點:1. 測試腳本只能使用Java語言 2. 測試腳本必須每次被上傳到設(shè)備上運行章咧。 我們希望測試能夠用一個更腳本化的語言验靡,例如Python編寫劲弦,同時可以每次所見即所得地修改測試耳标、運行測試。這里要非常感謝 Xiaocong He (@xiaocong)邑跪,他將這個想法實現(xiàn)了出來(見xiaocong/uiautomator)麻捻,原理是在手機上運行了一個http服務(wù)器纲仍,將uiautomator中的功能開放出來,然后再將這些http接口贸毕,封裝成Python庫。
我們的uiautomator2項目是對xiaocong/uiautomator的增強夜赵,主要有以下部分:
1. 設(shè)備和開發(fā)機可以脫離數(shù)據(jù)線明棍,通過WiFi互聯(lián)(基于atx-agent)
2. 集成了openstf/minicap加快截圖速度
3. 集成了openstf/minitouch達到精確實時控制設(shè)備
4. 修復(fù)了xiaocong/uiautomator經(jīng)常性退出的問題
5. 代碼進行了重構(gòu)和精簡,方便維護
工作原理
如圖所示寇僧,python-uiautomator2主要分為兩個部分摊腋,python客戶端,移動設(shè)備
python端:運行腳本嘁傀,并向移動設(shè)備發(fā)送HTTP請求
移動設(shè)備?:移動設(shè)備上運行了封裝了uiautomator2的HTTP服務(wù)兴蒸,解析收到的請求,并轉(zhuǎn)化成uiautomator2的代碼细办。
整個過程
1. 在移動設(shè)備上安裝atx-agent(守護進程), 隨后atx-agent啟動uiautomator2服務(wù)(默認7912端口)進行監(jiān)聽
2. 在PC上編寫測試腳本并執(zhí)行(相當(dāng)于發(fā)送HTTP請求到移動設(shè)備的server端)
3. 移動設(shè)備通過WIFI或USB接收到PC上發(fā)來的HTTP請求橙凳,執(zhí)行制定的操作
環(huán)境搭建
安裝Python
如命令行可以執(zhí)行python,則跳過此步驟
在python官網(wǎng)下載python笑撞,并配置環(huán)境變量岛啸,可點擊查看詳細教程
安裝adb
如命令行可以執(zhí)行adb devices,則跳過此步驟
從谷歌官網(wǎng)下載Android Platform Tools?茴肥,?解壓坚踩,并加包含adb.exe的目錄加入到系統(tǒng)的PATH中。
命令行窗口輸入:
pip install -U --pre uiautomator2
經(jīng)過短暫的等待瓤狐,就安裝好了瞬铸。部分情況可以因為中國互聯(lián)網(wǎng)防火墻的原因,安裝不了础锐,這是可以試試用國內(nèi)的pypi鏡像
pip install -U --pre uiautomator2 -i https://pypi.doubanio.com/simple
此外嗓节,還需要pillow來處理截圖數(shù)據(jù)
命令行窗口輸入:
pip install pillow
設(shè)備安裝atx-agent(將相關(guān)聯(lián)的守護進程部署到設(shè)備上)
電腦連接上一個手機或多個手機, 確保adb已經(jīng)添加到環(huán)境變量中,執(zhí)行下面的命令會自動安裝本庫所需要的設(shè)備端程序:uiautomator-server 郁稍、atx-agent赦政、openstf/minicap、openstf/minitouch首先將設(shè)備插入到手機上耀怜,如果提示信任開發(fā)者選項就點擊確認恢着。
命令行窗口輸入:
adb devices
python -m uiautomator2 init
安裝過程中會聯(lián)網(wǎng)下載組件,安裝提示success即可财破。
以上環(huán)境搭建基本完成
確定環(huán)境是否搭建成功
接下來看一段Python腳本掰派,運行成功時手機會彈出一句:Hello world, 顯示時間為3秒
應(yīng)用及操作
調(diào)用uiautomator2的過程
1. 配置手機設(shè)備參數(shù)左痢,設(shè)置具體操作的是哪一臺手機
2. 抓取手機上應(yīng)用的控件靡羡,制定對應(yīng)的控件來進行操作
3. 對抓取到的控件進行操作系洛,比如點擊、填寫參數(shù)等略步。
配置手機設(shè)備參數(shù)
python-uiautomator2連接手機的方式有兩種描扯,一種是通過WIFI,另外一種是通過USB趟薄。兩種方法各有優(yōu)缺點绽诚。WIFI最便利的地方要數(shù)可以不用連接數(shù)據(jù)線,USB則可以用在PC和手機網(wǎng)絡(luò)不在一個網(wǎng)段用不了的情況杭煎。
1. 使用WIFI連接
手機獲取到手機的IP恩够,并確保電腦可以PING通手機。手機的IP可以在設(shè)置-WIFI設(shè)置里面獲取到羡铲。比如手機的IP是192.168.0.100蜂桶,連接設(shè)備的代碼為
import?uiautomator2?as?u2
d?=?u2.connect('192.168.0.100')
2. 使用USB連接
手機的序列號可以通過adb devices獲取到,假設(shè)序列號是123456f也切,連接代碼為
import?uiautomator2?as?u2
d?=?u2.connect_usb('123456f')