pip install uiautomator2
首次建议通过数据线连接手机开启usb调试模式,使用adb命令连接手机:
adb connect xxxx # xxx 为手机设备号
如果手机拥有root权限可以安装 ADB WIFI 来无线连接手机,前提是电脑与手机在同一个局域网内。
adb connect 192.168.x.x:5555 # 通过手机IP与ADB WIFI所给端口进行连接
import uiautomator2 as u2 from PIL import ImageFilter # 连接手机 devices = u2.connect_wifi("192.168.1.6") # 设备信息 print(devices.info) # 更详细的设备信息 print(devices.device_info) # 屏幕大小 print(devices.window_size()) # 截屏 devices.screenshot('/xxx/test.png') #截屏并存储在指定位置 im = devices.screenshot() im2 = im.filter(ImageFilter.BLUR) # 对截屏图像进行模糊操作 im3 = im2.resize((200,300)) # 调整图片大小 im2.save('xxxx') # 清除app数据 devices.app_clear('tv.danmaku.bili') #包名 # 正在运行的app信息 print(devices.app_current()) # 打开app方式1 devices(text='哔哩哔哩').click() # 打开app方式2 devices.app_start('tv.danmaku.bili') #包名 devices.app_start('tv.danmaku.bili',wait=True) # 等APP加载完后 在往下执行 默认等待时间20s 超过后报错 # 设置全局默认等待时间 devices.wait_timeout = 30 devices.implicitly_wait(30) # 两种方式等同 devices(resourceId="expand_search").click(timeout=50) # 单独设置超时时间 # 模拟按键 """ home #手机Home键 back #手机返回键 left #对应键盘上的向右键<- right #对应键盘上的向右键-> up #对应键盘上的向上键 down #对应键盘上的向下键 center #选中? menu #菜单 search #查找? enter #对应键盘上的Enter键 delete(or del) #对应键盘上的DEL键 用于删除 recent(recent apps) #任务切换 volume_up #声音向上调整 volume_down #声音向下调整 volume_mute #静音按键 camera #拍照 power #电源键 """ devices.press("volume_up") # 元素定位 devices(resourceId="expand_search") # 根据resourceID定位 devices(text='哔哩哔哩') # 根据文本定位 devices(textContains='哩哔') # 根据所包含文本定位 devices(textMatches='*哩哔') # 根据所包正则定位 devices(textStartsWith='哔') # 根据所包正则定位 devices(textStartsWith='哔',checkable=True,checked=True) # 多条件定位 devices(textStartsWith='哔', instance=2) # 多个匹配,根据索引instance定位 # 点击操作 devices.click(686,1000) # 根据全局坐标点击 devices.click(0.765,0.896) # 根据位置占屏幕百分比点击 devices(text='哔哩哔哩').click*() # 定位后再点击 # 滑动操作 devices.swipe(startx,starty,endx,endy) # 基础滑动操作 全局直接滑动 ''' left down up right ''' devices.swipe_ext('left',scale=0.9) # 拓展滑动操作 (滑动方向,与滑动比例) e = devices(text='哔哩哔哩') e.swipe('down',steps=100) # 先定位元素,后滑动 (steps为滑动时间) # 输入 & 清空 elem = devices(resourceId="tv.danmaku.bili:id/search_bar") elem.send_keys("xxxx") elem.clear_text() # 关闭app devices.app_stop('tv.danmaku.bili') #包名