一說到app自動化測驗,第一反應就會想到appium這個框架,和web端的selenium一樣,但是對于appium來說,搭建環境非常重要,很多人都被環境搞得望而卻步了,放棄了appium,
下面說的uiautomator2這個框架,環境比appium簡單多了,可以值得一學的
1.uiautomator2簡介和原理分析
uiautomator2是一個自動化測驗開源工具,僅支持Android平臺的原生應用測驗,它本來是Google提供的一個自動化測驗的Java庫,后來發展了python-uiautomator2,封裝了谷歌自帶的uiautomator測驗框架,提供便利的python介面,用它可以很便捷的撰寫python腳本來實作app的自動化測驗
原理決議:
python端:運行腳本,往移動端發送HTTP請求
移動端:安裝atx-agent,然后atx-agent啟動uiautomator2服務進行監聽,并識別python腳本,轉換為uiautomator2的代碼,
移動設備通過WIFI(同一網段)或USB接收到PC上發來的HTTP請求,執行制定的操作
2.安裝
1.首先跟appium一樣,要先安裝adb
下載androidsdk,并配置環境變數
2.安裝uiautomator2
這個不好安裝,這里推薦用清華源或者豆瓣源來安裝
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --pre -U
uiautomator2
3.設備初始化:首先設備連接到PC,并能夠adb devices發現該設備
我這里用的是夜神模擬器

4.在設備上安裝atx-agent
執行 python -m uiautomator2 init
夜神模擬器就自動安裝了,手機真機可能需要點擊同意安裝
3.驗證設備是否連接成功
首先看設備是否連接上了
導包并重命名 import uiautomator2 as ut
連接設備是ut.connect(‘127.0.0.1:62001’)
import uiautomator2 as ut
d=ut.connect('127.0.0.1:62001')
print(d.device_info)
列印出來這個設備的所有資訊

這就說明連接是成功的
接下來需要定位元素,這里介紹一款好用的定位工具:weditor ,不僅可以實時定位,而且還可以在里面撰寫除錯代碼
4.安裝weditor
執行 pip install --pre weditor
可能會超時,這里推薦豆瓣源安裝,親測可用
pip install -i https://pypi.douban.com/simple weditor
安裝成功

執行
python -m weditor
會在瀏覽器打開一個網頁

打開之后是這樣的

在模擬器上運行app,點擊Dump Hierarchy,就可以在瀏覽器顯示出手機的螢屏了,打開實時,能實時看到
5.打開app并撰寫代碼
uiautomator2查看當前運行的app的命令是uiautomator2 current
比如我在模擬器里打開今日頭條,在cmd里執行uiautomator2 current
就會看到包名和當前類名

uiautomator2 打開app也比appium簡單,直接用app_start方法就行了,現在來在pycharm里寫代碼
d=ut.connect('127.0.0.1:62001')
print(d.device_info)
d.app_start('com.ss.android.article.lite','com.ss.android.article.lite.activity.SplashActivity') #打開app
我現在要點擊到登錄頁面,在weditor里查到元素定位,然后用d()就可以了,比appium里的find_element_by_xpath這種簡單
下面是我寫的代碼
import uiautomator2 as ut
import time
d=ut.connect('127.0.0.1:62001')
print(d.device_info)
d.app_start('com.ss.android.article.lite','com.ss.android.article.lite.activity.SplashActivity') #打開app
d.implicitly_wait(10)
d(text='熱榜').click()
d(text='未登錄').click()
d(text="登錄").click()
d(text="手機號").send_keys('13409012321')
d(text='請輸入驗證碼').send_keys('123456')
d(text='進入頭條').click()
uiautomator2里還有更多好玩好用的方法,慢慢學習,會愛上這個框架的
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/76453.html
標籤:其他
下一篇:Android 體系結構
