一個好用的移動端自動化框架-uiautomator2


簡介:

  uiautomator2 是一個可以使用Python對Android設備進行UI自動化的庫。其底層基於Google uiautomator,Google提供的uiautomator庫可以獲取屏幕上任意一個APP的任意一個控件屬性,並對其進行任意操作

優缺點:
  優點:

    1、環境搭建簡單

    2、元素查找有專用的weditor,相比其他簡單明了

    3、代碼語法簡單,容易學習理解

    4、相比appium不用啟動客戶端

    5、可以使用wifi以及usb連接

  缺點:

    1、兼容性相對較差

    2、功能相比appium較缺少

    3、設備上面必須安裝一些調試app,新設備就必須去連接usb然后去init安裝,比較不省心

 

安裝,安裝這一塊就不多bb了:

  裝一下uiautomator2的包

  pip3 install --pre -U uiautomator2

  usb連接手機裝一下依賴的包:

  python3 -m uiautomator2 init

 

裝完之后,開始啟動擼碼

import uiautomator2

## wifil連接
d = uiautomator2.connect_wifi()
## 直接連接
d1 = uiautomator2.connect()
## usb連接
d2 = uiautomator2.connect_usb()
## adb、wifi連接
d3 = uiautomator2.connect_adb_wifi()

這些就是直接啟動,然后就可以直接開始android的ui自動化了

下面附一些基礎語法

ResourceId定位:
d(resourceId="com.meizu.mzbbs:id/tp").click()

Text定位:
d(text="精選").click()

Description定位:
d(description="..").click()

ClassName定位:
d(className="android.widget.TextView").click()

import uiautomator2 as u2
from time import sleep

##使用本地wifi地址
d = u2.connect('192.168.31.234')

##等待元素出現
# d(text='settings').wait(timeout=10.0)

##使用設備id控制
# d = u2.connect_usb('設備id')

# 啟動App
d.app_start("com.meizu.mzbbs")
# 搜索
d(resourceId="com.meizu.mzbbs:id/j0").click()
# 停止app
d.app_stop("com.meizu.mzbbs") 


中文字符的輸入
如果可以定位到元素,直接通過set_text就可以輸入中文
d(text="Settings").set_text("你好")

如果定位不到元素需要使用send_keys方法,以及切換輸入法
d.set_fastinput_ime(True)
d.send_keys("你好 Hello")
d.set_fastinput_ime(False) # 輸入法用完關掉

截圖:d.screenshot("home.jpg")
獲取圖層信息:xml = d.dump_hierarchy()

## 按住滑動
u.swipe_points([(0.235, 0.456), (0.503, 0.449), (0.509, 0.601), (0.777, 0.603), (0.771, 0.763), (0.222, 0.75)], 0.2)

 

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM