准备:

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自动化)相关推荐

  1. 能安装python库的app_APP自动化之安装Python(类库)环境

    前言 近期在项目组在开发一款APP,所以顺势研究一下使用Appium+python做自动化测试. 一.python环境准备 首先,需要一个运行python语言的环境,就像要运行JAVA要配置JAVA环 ...

  2. python+appium手机APP自动化基础篇3-找元素定位(anroid)

    1. 定位工具 前言,在环境搭建已经安装anroid-sdk,里面就自带有元素定位的工具.找到uiautomatorviewer.bat文件,位置在D:\android-sdk-windows\too ...

  3. Python+Appium APP自动化环境搭建

    Python+Appium之APP自动化环境搭建 1.安装node.js (1)一直点击下一步即可 (2)配置环境变量 (3)输入npm --version 安装成功 2.安装appium-docto ...

  4. 100个相见恨晚的Python库(建议收藏)

    大家好,我是一行 在python程序员成为大神之前,都不可避免的都要做一段时间的调包侠 那就算是调包侠也都会有自己调包秘籍,拿出来能让他人感叹"相见恨晚"的那种 Awesome P ...

  5. 100个相见恨晚的Python库

    大家好,我是一行 在python程序员成为大神之前,都不可避免的都要做一段时间的调包侠 那就算是调包侠也都会有自己调包秘籍,拿出来能让他人感叹"相见恨晚"的那种 Awesome P ...

  6. 53个Python库,你必须要试试

    Python库大全 大邓将Python库整理为8部分,对每个库稍加自己的理解和评价,对Python感兴趣的同学可以收藏起来 •网络爬虫 •数据库 •数据分析 •机器学习 •可视化 •文本分析 •GUI ...

  7. Python较为经典的53个Python库

    Python库大全 将Python库整理为8部分,对每个库稍加自己的理解和评价,对Python感兴趣的同学可以收藏起来 •网络爬虫•数据库•数据分析•机器学习•可视化•文本分析•GUI窗体软件开发•自 ...

  8. python教程app攻略_一篇清晰易懂的Python操控手机APP攻略!

    阅读全文大概需要 9 分钟. 最近由于一直处于在家远程办公状态,新的一年,很多公司.部门事情要处理,比较忙,公号原创文的创作速度明显减慢!亲爱的读者们,你们都等着急了吧. 最近经常看到许多公号在推一些 ...

  9. Python库大全汇总

    网络爬虫 •requests[1] 最好用.最简单的网络爬虫访问库 •BeautifulSoup[2] 最简单的网页解析库 •pyquery[3] 最简洁网页解析库 •scrapy[4] 最流行的爬虫 ...

最新文章

  1. 静态类型检查—Flow入门
  2. ping不通www.baidu.com,但可以访问www.baidu.com网页
  3. 【贪心】Codeforces Round #436 (Div. 2) D. Make a Permutation!
  4. [译文]Domain Driven Design Reference(五)—— 为战略设计的上下文映
  5. redis生产环境下部署lua脚本
  6. java收获_java学习收获
  7. qt接收服务器信息中文乱码,在qt提取lineedit中的中文字符串,通过tcp通信时,服务器接收乱码的情况,解决办法...
  8. 有知其下落者的nanshan
  9. Java VisualVM远程监控JVM
  10. 设计模式系列之九:职责链模式
  11. python使用密钥加密的表述_python - PythonGnuPG生成密钥,对消息进行加密和解密 - SO中文参考 - www.soinside.com...
  12. 集团进口煤炭行业经历“冰火两重天”说明了啥?
  13. 关于T检验的各种问题
  14. Java实现家谱家族管理系统,图形化家谱家族树,单机应用程序
  15. 巴菲特致股东的一封信:2001年
  16. LabVIEW基础课程(2) ----虚拟抽奖机
  17. c++ 字符串流 sstream(常用于格式转换)
  18. 20200614在ubuntu20.04的本地编译全志R系列的步骤20
  19. 安卓逆向系列教程 4.10 玄奥八字
  20. 高级软件测试工程师的面试

热门文章

  1. 排序算法--鸡尾酒排序
  2. 通信算法之八十:信道均衡-MMSE 定点化
  3. 如何迅速的转换音视频格式?
  4. SYN,ICMP, UDP Flood攻击原理与防护
  5. 小凯的疑惑 原题+Plus 证明
  6. 阴差阳错捡到的小奶猫,硬着头皮也要养大它了
  7. 实现 swiper 的左右箭头放到外面,定制箭头的样式
  8. AR项目总结之原型图
  9. 对蚁群算法中轮盘赌选择城市的理解
  10. 大数据架构详解电子书全