【UIautomator2 安卓自动化】教程
一、环境准备:
【安装】
安装uiautomator2
pip install --pre uiautomator2
pip install pillow
【初始化】
部署相关的守护进程。
电脑连接上一个手机或多个手机, 确保adb已经添加到环境变量中,执行下面的命令会自动安装本库所需要的设备端程序:uiautomator-server 、atx-agent、openstf/minicap、openstf/minitouch
安装手机端控制程序
python -m uiautomator2 init
【连接】
wifi链接方法:
手机和电脑必须处于同一个网段才可使用wifi连接
获取手机ip地址,可以在手机-设置-更多-关于手机 或者 打开手机wifi设置,长按设置wifi获取
import uiautomator2 as u2
d = u2.connect('192.168.31.234')
print(d.info)

定位元素:
weditor定位元素的方法
安装:pip install --pre --upgrade weditor
cmd窗口中使用:
使用前需要在手机端安装 python -m uiautomator2 init,以保证链接正常
使用:python -m weditor

设置好连接方式后,点击connect 出现绿色叶子图案,及是连接成功,dump刷新页面
二、脚本操作
https://www.jianshu.com/p/874e5ceb72bb
连接
d=u2.connect_wifi("ip") #通过WiFi
d=u2.connect('id') # devices id 通过设备名称
d=u2.connect_usb() # 通过USB
d.app_install(' url ')# 安装应用
d.disable_popups() #自动跳过弹出窗口
d.disable_popups(假)#禁用自动跳过弹出窗口
d.info #获取基本信息
操作屏幕
d.windows.size() #获取窗口大小
d.screen_on()#打开屏幕
d.screen_off()#关闭屏幕
d.info.get(' screenOn ')#获取当前屏幕状态
d.unlock() #解锁屏幕
d.click(x,y)#点击屏幕坐标
d.double_click(x,y)#双击
d.long_click(x,y) # 长按一下屏幕
d.long_click(X,Y,1)#长按1秒(默认)
d.swipe(x, y, x, y) #滑动
解锁9宫格,points手指不抬起
d.swipe_points([(0.228, 0.525),(0.005, 0.525),(0.766, 0.525),(0.5, 0.677),(0.228, 0.828),(0.497, 0.828),(0.761, 0.828)],0.05)
d.press("home")
d.press("back")
d.press(x, y) # 按键操作
滑动相关
d(scrollable=True).scroll.vert.backward() # 向上滑动
d(scrollable=True).scroll.toEnd(60) # 竖直滑动到结尾
d(scrollable=True).scroll(steps=30) # 向下滑动
d(scrollable=True).scroll.toBeginning(steps=60) #竖直滑动到开头
d(scrollable=True).scroll.horiz.forward(steps=60) #水平向右滑动
d(scrollable=True).scroll.horiz.toEnd(steps=50, max_swipes=500) #水平向右滑动,直到最右边
d(scrollable=True).scroll.horiz.backward(steps=50) # 水平向左滑动,直到最左边
d(text="Settings").drag_to(x, y, duration=0.5) # 拖动
d(text="Settings").drag_to(text="text", duration=1) # 拖动到指定位置,1s内完成
d().gesture((a,b),(c,d), a1,b1),(c1,d1),steps=100) # 双指从(a,b),(c,d)滑动(a1,b1),(c1,d1),步长100
d().pinch_out(percent=33, steps=100) # 从屏幕外侧向中心滑动,percent为左右起始位置占两边的比例
d().pinch_out(percent=33, steps=100) # 从屏幕中心向外侧滑动,percent为左右起始位置占两边的比例
控件选择器
#选择器支持以下参数
# text,textContains,textMatches,textStartsWith
# className, classNameMatches
# description,descriptionContains,descriptionMatches,descriptionStartsWith
# checkable,checked,clickable,longClickable
# scrollable,enabled,focusable,focused,selected
# packageName, packageNameMatches
# resourceId, resourceIdMatches
# index, instance
d(text="Settings").clear_text() # clear the text(清除文本信息)
d(text="Settings").set_text("My text...") # set the text(设置文本信息)
d(text="Settings").click()
d(text="Settings").long_click()
#d(text="Settings").drag.to(x, y, steps=100)
d(text="Settings").drag.to(text="Clock", steps=50)
d(text="Settings").swipe.right()
d(text="Settings").swipe.left(steps=10)
d(text="Settings").swipe.up(steps=10)
d(text="Settings").swipe.down()
# d(text="Settings").gesture((sx1, sy1), (sx2, sy2)).to((ex1, ey1), (ex2, ey2))
# d().gestureM((sx1, sy1), (sx2, sy2),(sx3, sy3)).to((ex1, ey1), (ex2, ey2),(ex3,ey3))
d(text="Settings").wait.exists(timeout=3000)
d(text="Settings").exists(timeout=3000)
d(text="Settings").wait.gone(timeout=1000)
补充说明:
如果出现
raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='172.26.118.2', port=7912): Max retries exceeded with url: /packages/com.tencent.mm/info (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x000001B6BE42AB70>: Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。',))
则执行 python -m uiautomator2 init 即可
【UIautomator2 安卓自动化】教程的更多相关文章
- 安卓自动化测试之MonkeyRunner环境的搭建
最近在抽时间学习一些安卓自动化的知识,把学到东西都就记录下来,避免以后记性不好忘记,也方便对自己积累知识的查阅 MonkeyRunner是基于坐标点来操作控件的,你可以通过写python脚本来调用mo ...
- appium安卓自动化的 常用driver方法封装
appium安卓自动化的 常用driver方法封装 做安卓自动化的时候,很多方法写起来会造成代码冗余,把这部分封装起来 ,添加到androidUI工具类里,随时可调用 都放在这个类下面: @Compo ...
- appium安卓自动化常见问题处理
appium安卓自动化常见问题处理 1.seesionnotcreatedexception 遇到这个首先确定下jdk需要1.7以上 然后还要确定appium是启动状态,可以cmd重启下appium ...
- 尝鲜党:Nexus5、6刷安卓M教程
说明: 进入recovery的命令:adb reboot recovery 进入bootloader的命令:adb reboot bootloader 概述 F:\Nexus5\AndroidM\ha ...
- uiautomator +python 实现安卓自动化
很多人看到这个题目我相信他们可能会说,uiautomator不是java开发的吗?python怎么用呢,其实呢 ,一开始我也是这么想的,看了金阳光老师的视频,也是用java写的,我表示不服,我要科学上 ...
- delphi 安卓配置教程
本教程以 delphi 10.2.2.2004 为例,演示 delphi 安卓配置步骤 1.打开 Android Tools 2. 选择合适的版本.比如:我的小米4 LTE 是 andorid 6.0 ...
- 安卓自动化robotium工具简单使用(二)
在学习安卓的这段时间里,刚好有个朋友有一个APP的应用需要开发. 我马上就动手开始做着试试,在完成开发的同时写了相应的自动化测试代码,使用的是robotium. 才接触安卓没几天,写的不太好,如果有好 ...
- Web自动化测试(全网最给力自动化教程)
http://www.cnblogs.com/zidonghua/p/7430083.html python+selenium自动化软件测试(第2章):WebDriver API 欢迎您来阅读和练手! ...
- 利用UiWatchers 监听解决安卓自动化各种自动化各种非期待弹窗,弹层,升级,广告,对话框,来电等问题
app自动化时,各种不期待的弹层弹窗,升级广告等时有飞出,由于弹窗具有不定时,不定页面等很多不确定性.有的弹窗很不友好,不×掉,很难进行下一步操作,造成 测试用例失败.而判断是否有弹窗,弹层很麻烦.研 ...
随机推荐
- Qt For MacOs环境搭建
使用VMWARE关于macos镜像搭建,参考https://blog.csdn.net/u011415782/article/details/78505422 关于darwin8.5.5 来安装vmt ...
- 协程实现socket并发编程
在python中多线程其实是被弱化了,因为由于GIL的原因,同一时间只有一个线程能访问CPU,即使你的CPU是多核的在python中因为多线程被弱化了,所以协程显的重要,能够在一个线程中提高CPU的利 ...
- 5、Spring Boot缓存
1.JSR107 Java Caching定义了5个核心接口,分别是CachingProvider.CacheManager.Cache.Entry.Expiry. CachingProvider:定 ...
- C++中new和malloc区别
面试中new和malloc区别会被经常问到,审视了自己,发现不知道该怎么表达 整理一下: 1.从属性 new/delete是C++关键字,需要编译器支持: malloc/free是库函数,需要头文件支 ...
- 安装了向日葵或TeamViewer导致系统亮度无法调节
1.向日葵 安装向日葵造成无法调节亮度的原因:可能为了使用向日葵的黑屏模式功能,误装了向日葵的驱动.建议不要使用该功能. 关于安装向日葵的用户,请参考以下步骤解决: 请保持电脑处于联网状态,并关闭了向 ...
- redis 一致性分析
转载: https://blog.csdn.net/qq32933432/article/details/108690254
- Netty源码解析 -- 内存池与PoolArena
我们知道,Netty使用直接内存实现Netty零拷贝以提升性能, 但直接内存的创建和释放可能需要涉及系统调用,是比较昂贵的操作,如果每个请求都创建和释放一个直接内存,那性能肯定是不能满足要求的. 这时 ...
- 2020天梯赛总决赛L2-3 完全二叉树的层序遍历 (25分)
题目:一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是完美二叉树.对于深度为 D 的,有 N 个结点的二叉树,若其结点对应于相同深度完美二叉树的层序遍历的前 N 个结点,这样的树就是完全 ...
- C语言项目——工程化编程的案例分析
一.VSCode安装及环境配置 初始在Win下安装Mingw-w64/GCC 和 GDB,在VSCode下打开项目案例,发现在linktable中需要包含pthread头文件.此文件是基于Linux系 ...
- centOs7.5.64以上版本的操作系统搭建GitLab记录
一. 安装并配置必要的依赖关系在CentOS系统上安装所需的依赖:ssh,防火墙,postfix(用于邮件通知) ,wget,以下这些命令也会打开系统防火墙中的HTTP和SSH端口访问. 1.安装ss ...