Python库-uiautomator2(app自动化)
准备:
pip安装uiautomator2包
安装adb,配置环境路径
cmd输入adb检查是否安装完毕
cmd输入adb devices检查已连接设备
手机连接:
usb
1.打开开发者模式-usb调试
如果出现unauthorized
,重复步骤1
2.python代码:填手机序列号
device=u2.connect('xxxxxxxxxxxxxxxx')
wifi
python代码:填IP地址
device=u2.connect('http://192.168.xxx.xxx)
函数语法
#调用uiautomator2包并重命名
import uiautomator2 as u2
device=u2.connect('序列号') #打印设备信息
print(device.device_info)
#点击进入app
##打印当前app名称包名
print(device.app_current())
#打印所有包名
print(device.app_list_running())
#打开app
device.app_start('com.tencent.mm')
#关闭app
device.app_stop('com.tencent.mm')
基本信息显示
设备信息
#打印设备信息
print(device.infoo)
#较为详细设备信息
print(device.device_info)
#获取屏幕大小(括号内可设置文件名)
print(device.window_size())
app信息
##打印当前app名称包名
print(device.app_current())
#打印所有包名
print(device.app_list_running())
按键操作
解锁屏幕
device.unlock()
点亮关闭屏幕
device.screen_on()
device.screen_off()
获取屏幕开关状态
device.info.get('screenOn')
按按键
device.press()
#括号内输入<“按键名”>或<按键对应代码>
当前支持按键:
- home
- back
- left
- right
- up
- down
- center
- menu
- search
- enter
- delete ( or del)
- recent (recent apps)
- volume_up
- volume_down
- volume_mute
- camera
- power
按键代码定义详见:KeyEvent | Android Developers
手势交互
点击操作
device.click(x, y)
支持:
- 元素点击(定位元素,再点击)
- 像素点点击
- 百分比点击
长按屏幕
device.long_click(x, y)
device.long_click(x, y, 0.5) # long click 0.5s (default)
滑动操作
device.swipe(startx,starty,endx,endy)
device.swipe_ext('方向',scale=百分比)
#滑动元素
element.swipe('方向',steps=滑动时间)
拖动
device.drag(sx, sy, ex, ey)
device.drag(sx, sy, ex, ey, 0.5) # swipe for 0.5s(default)
方向与旋转
识别方向
可用的方向有:
natural 或 n
left 或l
right 或r
upsidedown 或u (不可设置)
# 检索方向,可以是"natural" 或"left" 或"right" 或"upsidedown"
orientation = d.orientation
# 警告:未在我的TT-M1通过测试
# 设定orientation(方向) 和 冻结旋转.
d.set_orientation("n") # 或"natural"
d.set_orientation("l") # 或"left"
d.set_orientation("r") # 或"right"
d.set_orientation("n") # or "natural"
冻结/解冻旋转
# 冻结旋转
d.freeze_rotation()
# 取消冻结旋转
d.freeze_rotation(False)
输入
定位输入框元素,输入/清空
#定位输入框元素
element=device(resourceId="**********")
#输入内容
element.send_keys('内容')
#清空内容
element.clear_text()
截屏
device.screenshot('文件名')
进行截屏,之后可以用pillow库、cv2库对图片进行进一步处理
pillow库与cv2库简述:
pillow库:Python图像处理库,它能够实现基本的图像操作,如图像打开、保存、缩放、裁剪、旋转、滤波等。Pillow支持多种图像格式,包括JPEG、PNG、BMP、GIF、TIFF等,并且可以在这些格式之间进行转换。
cv2库:开源计算机视觉库,它提供了许多用于处理图像和视频的函数和算法。cv2是基于C++开发的,但也提供了Python接口。它可以实现许多功能,如图像处理、特征检测、人脸识别、目标跟踪、机器学习等。
#截屏
device.screenshot('文件名')
#保存截图后可进一步操作
##保存截图
im=device.screenshot()
im.save('imgname.img')
##加滤镜:模糊
im2=im.filter(ImageFilter.BLUR)
im2.save("文件名2")
##重定大小存储
im3=im.resize((x,y))
im3.save("文件名3")
进一步操作详见pillow库与cv2库说明手册
#例:
# 获取PIL.Image 格式,需要先安装pillow
image = device.screenshot()
image.save("home.jpg") # 或 home.png # 获取opencv 格式, 需要先安装numpy 和cv2
import cv2 image = device.screenshot(format='opencv') cv2.imwrite('home.jpg', image)
文件操作
推送
#推送到一个文件夹
d.push("foo.txt", "/sdcard/")
# 推送并重命名
d.push("foo.txt", "/sdcard/bar.txt")
# 推送fileobj
with open("foo.txt", 'rb') as f: d.push(f, "/sdcard/")
# 推送并修改文件模式
d.push("foo.sh", "/data/local/tmp/", mode=0o755)
获取
d.pull("/sdcard/tmp.txt", "tmp.txt")
# 设备中没有文件会引发FileNotFoundErr
d.pull("/sdcard/some-file-not-exists.txt", "tmp.txt")
APP操作
安装
目前仅支持从url安装。
d.app_install(' HTTP://some-domain.com/some.apk ')
启动
以package name启动
d.app_start("com.example.hello_world") # 以package name启动
停止与清除
# 执行强制停止
d.app_stop("com.example.hello_world")
# 执行应用清除
d.app_clear('com.example.hello_world')
停止所有APP的运行
#停止所有
d.app_stop_all()
#停止除com.examples.demo以外的所有应用程序
d.app_stop_all(excludes=['com.examples.demo'])
元素等待
程序很快,app很慢
强制等待
猜测加载时间
time.sleep(时间)
智能等待
什么时候加载出来什么时候运行
超时时间:默认20s 。可用或
进行全局设置,也可在每条命令后设置单独的等待时间。
device.wait_timeout=时间
device.implicitly_wait()
#等待页面加载完成
device.wait_activity()
#等待元素出现 返回true/false
device().wait()
device(text='demo').wait()
#等待元素消失
device().wait_gone()
#等待元素是否存在
device().exist()
#等待点击
元素定位
元素定位辅助工具weditor
其他辅助工具:uiaotomatorviewer、appium
weditor优势:可以自动生成uiautomator2代码、可以同时管理多个设备、直接在调试页面操作手机
安装:
pip install weditor
出错解决:在cmd输入pip install --index-url https://pypi.tuna.tsinghua.edu.cn/simple/ weditor
或者下载weditor-plus包
使用:
打开终端输入weditor
,自动打开页面
元素构成
详情可看xml代码语法
可通过相关语法获取儿孙和同级UI对象
待完善:元素定位,可滚动元素、儿孙同级对象、相对位置元素;触发器;输入法;toast消息
参考资料:
uiautomator2-快速入门app自动化测试
uiautomator2 库中文手册
Python库-uiautomator2(app自动化)相关推荐
- 能安装python库的app_APP自动化之安装Python(类库)环境
前言 近期在项目组在开发一款APP,所以顺势研究一下使用Appium+python做自动化测试. 一.python环境准备 首先,需要一个运行python语言的环境,就像要运行JAVA要配置JAVA环 ...
- python+appium手机APP自动化基础篇3-找元素定位(anroid)
1. 定位工具 前言,在环境搭建已经安装anroid-sdk,里面就自带有元素定位的工具.找到uiautomatorviewer.bat文件,位置在D:\android-sdk-windows\too ...
- Python+Appium APP自动化环境搭建
Python+Appium之APP自动化环境搭建 1.安装node.js (1)一直点击下一步即可 (2)配置环境变量 (3)输入npm --version 安装成功 2.安装appium-docto ...
- 100个相见恨晚的Python库(建议收藏)
大家好,我是一行 在python程序员成为大神之前,都不可避免的都要做一段时间的调包侠 那就算是调包侠也都会有自己调包秘籍,拿出来能让他人感叹"相见恨晚"的那种 Awesome P ...
- 100个相见恨晚的Python库
大家好,我是一行 在python程序员成为大神之前,都不可避免的都要做一段时间的调包侠 那就算是调包侠也都会有自己调包秘籍,拿出来能让他人感叹"相见恨晚"的那种 Awesome P ...
- 53个Python库,你必须要试试
Python库大全 大邓将Python库整理为8部分,对每个库稍加自己的理解和评价,对Python感兴趣的同学可以收藏起来 •网络爬虫 •数据库 •数据分析 •机器学习 •可视化 •文本分析 •GUI ...
- Python较为经典的53个Python库
Python库大全 将Python库整理为8部分,对每个库稍加自己的理解和评价,对Python感兴趣的同学可以收藏起来 •网络爬虫•数据库•数据分析•机器学习•可视化•文本分析•GUI窗体软件开发•自 ...
- python教程app攻略_一篇清晰易懂的Python操控手机APP攻略!
阅读全文大概需要 9 分钟. 最近由于一直处于在家远程办公状态,新的一年,很多公司.部门事情要处理,比较忙,公号原创文的创作速度明显减慢!亲爱的读者们,你们都等着急了吧. 最近经常看到许多公号在推一些 ...
- Python库大全汇总
网络爬虫 •requests[1] 最好用.最简单的网络爬虫访问库 •BeautifulSoup[2] 最简单的网页解析库 •pyquery[3] 最简洁网页解析库 •scrapy[4] 最流行的爬虫 ...
最新文章
- 静态类型检查—Flow入门
- ping不通www.baidu.com,但可以访问www.baidu.com网页
- 【贪心】Codeforces Round #436 (Div. 2) D. Make a Permutation!
- [译文]Domain Driven Design Reference(五)—— 为战略设计的上下文映
- redis生产环境下部署lua脚本
- java收获_java学习收获
- qt接收服务器信息中文乱码,在qt提取lineedit中的中文字符串,通过tcp通信时,服务器接收乱码的情况,解决办法...
- 有知其下落者的nanshan
- Java VisualVM远程监控JVM
- 设计模式系列之九:职责链模式
- python使用密钥加密的表述_python - PythonGnuPG生成密钥,对消息进行加密和解密 - SO中文参考 - www.soinside.com...
- 集团进口煤炭行业经历“冰火两重天”说明了啥?
- 关于T检验的各种问题
- Java实现家谱家族管理系统,图形化家谱家族树,单机应用程序
- 巴菲特致股东的一封信:2001年
- LabVIEW基础课程(2) ----虚拟抽奖机
- c++ 字符串流 sstream(常用于格式转换)
- 20200614在ubuntu20.04的本地编译全志R系列的步骤20
- 安卓逆向系列教程 4.10 玄奥八字
- 高级软件测试工程师的面试