Android自動化之-python-uiautomator2入門簡介
- 2019 年 11 月 23 日
- 筆記
python-uiautomator2是一個自動化測試開源工具,僅支援Android平台的原生應用測試。python-uiautomator2封裝了Google自帶的uiautomator2測試框架,提供便利的python介面。他允許測試人員直接在PC上編寫Python的測試程式碼,操作手機應用,完成自動化,大大提高了自動化程式碼編寫的效率。
原理:
python-uiautomator2主要分為兩個部分,python客戶端,移動設備
- python端: 運行腳本,並向移動設備發送HTTP請求
- 移動設備:移動設備上運行了封裝了uiautomator2的HTTP服務,解析收到的請求,並轉化成uiautomator2的程式碼。
整個過程
- 在移動設備上安裝
atx-agent
(守護進程), 隨後atx-agent
啟動uiautomator2服務(默認7912埠)進行監聽 - 在PC上編寫測試腳本並執行(相當於發送HTTP請求到移動設備的server端)
- 移動設備通過WIFI或USB接收到PC上發來的HTTP請求,執行制定的操作
環境安裝
1:ADB:
各種Android測試框架的基礎工具包,安裝參考:https://blog.csdn.net/L_201607/article/details/78150107
官網:http://adbshell.com/downloads
2:python-uiautomator2
Python
pip install –pre -U uiautomator2
1 |
pip install –pre -U uiautomator2 |
---|
3:Android設備安裝atx-agent
首先設備連接到PC,並能夠adb devices
發現該設備。
Python
python -m uiautomator2 init
1 |
python -m uiautomator2 init |
---|
這個命令做的是:從github下載atx–agent文件,並推送到手機。在手機上安裝包名為com.github.uiautomator
的apk
py連接Android手機
連接手機:
python-uiautomator2連接手機的方式有兩種,一種是通過WIFI(ip),另外一種是通過USB(ip+id)。兩種方法各有優缺點。 WIFI最便利的地方要數可以不用連接數據線,USB則可以用在PC和手機網路不在一個網段用不了的情況。
1.使用WIFI連接
手機獲取到手機的IP,並確保電腦可以PING通手機。手機的IP可以在設置-WIFI設置裡面獲取到。 比如手機的IP是192.168.0.100
,連接設備的程式碼為
Python
import uiautomator2 as u2 d = u2.connect('192.168.0.100')
12 |
import uiautomator2 as u2d = u2.connect('192.168.0.100') |
---|
2.使用USB連接
手機的序列號可以通過adb devices
獲取到,假設序列號是123456f
,連接程式碼為
Python
import uiautomator2 as u2 d = u2.connect_usb('123456f')
12 |
import uiautomator2 as u2d = u2.connect_usb('123456f') |
---|
可視化抓取控制項以及常用操作
如何在WEditor如何定位元素呢:
定位方式
- ResourceId定位:
d(resourceId="com.smartisanos.clock:id/text_stopwatch").click()
- Text定位
d(text="秒錶").click()
- Description定位
d(description="..").click()
- ClassName定位
d(className="android.widget.TextView").click()
Python
# click 點擊 d(text="Settings").click() # long click 長點擊 d(text="Settings").long_click() # 等待元素的出現 d(text="Settings").wait(timeout=10.0)
12345678 |
# click 點擊d(text="Settings").click() # long click 長點擊 d(text="Settings").long_click() # 等待元素的出現d(text="Settings").wait(timeout=10.0) |
---|
對手機元素框輸入中文:
如果可以定位到元素,直接通過set_text就可以輸入中文
Python
d(text="Settings").set_text("你好")
1 |
d(text="Settings").set_text("你好") |
---|
如果定位不到元素需要使用send_keys
方法,以及切換輸入法
Python
d.set_fastinput_ime(True) d.send_keys("你好 Hello") d.set_fastinput_ime(False) # 輸入法用完關掉
123 |
d.set_fastinput_ime(True)d.send_keys("你好 Hello")d.set_fastinput_ime(False) # 輸入法用完關掉 |
---|
截圖:
Python
d.screenshot("home.jpg")
1 |
d.screenshot("home.jpg") |
---|
獲取圖層資訊:
Python
xml = d.dump_hierarchy()
1 |
xml = d.dump_hierarchy() |
---|
github:https://github.com/openatx/uiautomator2
本文主內容轉自:https://testerhome.com/topics/11357
原創文章,轉載請註明: 轉載自URl-team
本文鏈接地址: Android自動化之-python-uiautomator2入門簡介