python3+android自动化之Uiautomator2

2021/4/14 20:55:27

本文主要是介绍python3+android自动化之Uiautomator2,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

python3+android自动化之Uiautomator2

      • 1、环境准备:
          • android sdk:[下载地址](https://developer.android.google.cn/studio/releases/platform-tools?hl=zh-cn)
          • uiautomator2 :`pip install uiautomator2 `
      • 2、连接手机
      • 3、代码展示

1、环境准备:

android sdk:下载地址
uiautomator2 :pip install uiautomator2

2、连接手机

首次建议通过数据线连接手机开启usb调试模式,使用adb命令连接手机:

adb connect xxxx  # xxx 为手机设备号

如果手机拥有root权限可以安装 ADB WIFI 来无线连接手机,前提是电脑与手机在同一个局域网内。

adb connect 192.168.x.x:5555  # 通过手机IP与ADB WIFI所给端口进行连接

3、代码展示

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') #包名


这篇关于python3+android自动化之Uiautomator2的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程