一个好用的移动端自动化框架-uiautomator2

时间:2022-09-08 18:29:44

简介(百度的):

  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)