uiautomator2環(huán)境搭建(基于python)

uiautomator2

uiautomator2是一個(gè)可以使用Python對(duì)Android設(shè)備進(jìn)行UI自動(dòng)化的庫(kù)。其底層基于Google uiautomator,Google提供的uiautomator庫(kù)可以獲取屏幕上任意一個(gè)APP的任意一個(gè)控件屬性,并對(duì)其進(jìn)行任意操作,但有兩個(gè)缺點(diǎn):1. 測(cè)試腳本只能使用Java語(yǔ)言 2. 測(cè)試腳本必須每次被上傳到設(shè)備上運(yùn)行。 我們希望測(cè)試能夠用一個(gè)更腳本化的語(yǔ)言,例如Python編寫,同時(shí)可以每次所見即所得地修改測(cè)試、運(yùn)行測(cè)試。這里要非常感謝 Xiaocong He (@xiaocong),他將這個(gè)想法實(shí)現(xiàn)了出來(見xiaocong/uiautomator),原理是在手機(jī)上運(yùn)行了一個(gè)http服務(wù)器,將uiautomator中的功能開放出來,然后再將這些http接口,封裝成Python庫(kù)。

我們的uiautomator2項(xiàng)目是對(duì)xiaocong/uiautomator的增強(qiáng),主要有以下部分:

1. 設(shè)備和開發(fā)機(jī)可以脫離數(shù)據(jù)線,通過WiFi互聯(lián)(基于atx-agent

2. 集成了openstf/minicap加快截圖速度

3. 集成了openstf/minitouch達(dá)到精確實(shí)時(shí)控制設(shè)備

4. 修復(fù)了xiaocong/uiautomator經(jīng)常性退出的問題

5. 代碼進(jìn)行了重構(gòu)和精簡(jiǎn),方便維護(hù)


工作原理


如圖所示,python-uiautomator2主要分為兩個(gè)部分,python客戶端,移動(dòng)設(shè)備

python端:運(yùn)行腳本,并向移動(dòng)設(shè)備發(fā)送HTTP請(qǐng)求

移動(dòng)設(shè)備?:移動(dòng)設(shè)備上運(yùn)行了封裝了uiautomator2的HTTP服務(wù),解析收到的請(qǐng)求,并轉(zhuǎn)化成uiautomator2的代碼。

整個(gè)過程

1. 在移動(dòng)設(shè)備上安裝atx-agent(守護(hù)進(jìn)程), 隨后atx-agent啟動(dòng)uiautomator2服務(wù)(默認(rèn)7912端口)進(jìn)行監(jiān)聽

2. 在PC上編寫測(cè)試腳本并執(zhí)行(相當(dāng)于發(fā)送HTTP請(qǐng)求到移動(dòng)設(shè)備的server端)

3. 移動(dòng)設(shè)備通過WIFI或USB接收到PC上發(fā)來的HTTP請(qǐng)求,執(zhí)行制定的操作


環(huán)境搭建

安裝Python

如命令行可以執(zhí)行python,則跳過此步驟

在python官網(wǎng)下載python,并配置環(huán)境變量,可點(diǎn)擊查看詳細(xì)教程


安裝adb

如命令行可以執(zhí)行adb devices,則跳過此步驟

從谷歌官網(wǎng)下載Android Platform Tools?,?解壓,并加包含adb.exe的目錄加入到系統(tǒng)的PATH中。


安裝python-uiautomator2

命令行窗口輸入:

pip install -U --pre uiautomator2

經(jīng)過短暫的等待,就安裝好了。部分情況可以因?yàn)橹袊?guó)互聯(lián)網(wǎng)防火墻的原因,安裝不了,這是可以試試用國(guó)內(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)的守護(hù)進(jìn)程部署到設(shè)備上)

電腦連接上一個(gè)手機(jī)或多個(gè)手機(jī), 確保adb已經(jīng)添加到環(huán)境變量中,執(zhí)行下面的命令會(huì)自動(dòng)安裝本庫(kù)所需要的設(shè)備端程序:uiautomator-server 、atx-agent、openstf/minicap、openstf/minitouch首先將設(shè)備插入到手機(jī)上,如果提示信任開發(fā)者選項(xiàng)就點(diǎn)擊確認(rèn)。

命令行窗口輸入:

adb devices

python -m uiautomator2 init


安裝過程中會(huì)聯(lián)網(wǎng)下載組件,安裝提示success即可。


以上環(huán)境搭建基本完成


確定環(huán)境是否搭建成功

接下來看一段Python腳本,運(yùn)行成功時(shí)手機(jī)會(huì)彈出一句:Hello world, 顯示時(shí)間為3秒



應(yīng)用及操作

調(diào)用uiautomator2的過程

1. 配置手機(jī)設(shè)備參數(shù),設(shè)置具體操作的是哪一臺(tái)手機(jī)

2. 抓取手機(jī)上應(yīng)用的控件,制定對(duì)應(yīng)的控件來進(jìn)行操作

3. 對(duì)抓取到的控件進(jìn)行操作,比如點(diǎn)擊、填寫參數(shù)等。


配置手機(jī)設(shè)備參數(shù)

python-uiautomator2連接手機(jī)的方式有兩種,一種是通過WIFI,另外一種是通過USB。兩種方法各有優(yōu)缺點(diǎn)。WIFI最便利的地方要數(shù)可以不用連接數(shù)據(jù)線,USB則可以用在PC和手機(jī)網(wǎng)絡(luò)不在一個(gè)網(wǎng)段用不了的情況。

1. 使用WIFI連接

手機(jī)獲取到手機(jī)的IP,并確保電腦可以PING通手機(jī)。手機(jī)的IP可以在設(shè)置-WIFI設(shè)置里面獲取到。比如手機(jī)的IP是192.168.0.100,連接設(shè)備的代碼為

import?uiautomator2?as?u2

d?=?u2.connect('192.168.0.100')

2. 使用USB連接

手機(jī)的序列號(hào)可以通過adb devices獲取到,假設(shè)序列號(hào)是123456f,連接代碼為

import?uiautomator2?as?u2

d?=?u2.connect_usb('123456f')

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容