一、环境准备:

【安装】

安装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 安卓自动化】教程的更多相关文章

  1. 安卓自动化测试之MonkeyRunner环境的搭建

    最近在抽时间学习一些安卓自动化的知识,把学到东西都就记录下来,避免以后记性不好忘记,也方便对自己积累知识的查阅 MonkeyRunner是基于坐标点来操作控件的,你可以通过写python脚本来调用mo ...

  2. appium安卓自动化的 常用driver方法封装

    appium安卓自动化的 常用driver方法封装 做安卓自动化的时候,很多方法写起来会造成代码冗余,把这部分封装起来 ,添加到androidUI工具类里,随时可调用 都放在这个类下面: @Compo ...

  3. appium安卓自动化常见问题处理

    appium安卓自动化常见问题处理 1.seesionnotcreatedexception 遇到这个首先确定下jdk需要1.7以上 然后还要确定appium是启动状态,可以cmd重启下appium ...

  4. 尝鲜党:Nexus5、6刷安卓M教程

    说明: 进入recovery的命令:adb reboot recovery 进入bootloader的命令:adb reboot bootloader 概述 F:\Nexus5\AndroidM\ha ...

  5. uiautomator +python 实现安卓自动化

    很多人看到这个题目我相信他们可能会说,uiautomator不是java开发的吗?python怎么用呢,其实呢 ,一开始我也是这么想的,看了金阳光老师的视频,也是用java写的,我表示不服,我要科学上 ...

  6. delphi 安卓配置教程

    本教程以 delphi 10.2.2.2004 为例,演示 delphi 安卓配置步骤 1.打开 Android Tools 2. 选择合适的版本.比如:我的小米4 LTE 是 andorid 6.0 ...

  7. 安卓自动化robotium工具简单使用(二)

    在学习安卓的这段时间里,刚好有个朋友有一个APP的应用需要开发. 我马上就动手开始做着试试,在完成开发的同时写了相应的自动化测试代码,使用的是robotium. 才接触安卓没几天,写的不太好,如果有好 ...

  8. Web自动化测试(全网最给力自动化教程)

    http://www.cnblogs.com/zidonghua/p/7430083.html python+selenium自动化软件测试(第2章):WebDriver API 欢迎您来阅读和练手! ...

  9. 利用UiWatchers 监听解决安卓自动化各种自动化各种非期待弹窗,弹层,升级,广告,对话框,来电等问题

    app自动化时,各种不期待的弹层弹窗,升级广告等时有飞出,由于弹窗具有不定时,不定页面等很多不确定性.有的弹窗很不友好,不×掉,很难进行下一步操作,造成 测试用例失败.而判断是否有弹窗,弹层很麻烦.研 ...

随机推荐

  1. Python _PyQt5 【总】

    http://www.cnblogs.com/archisama/p/5442071.html QtCore QtGui QtWidgets QtMultimedia QtBluetooth QtNe ...

  2. [代码审计]:PhpMyWind储存型XSS漏洞(CVE-2017-12984)

    简介 今天开启一下代码审计的篇章  python安全编程剩下的看起来没意思就结束了 ,现在规划每2周写一个爬虫练练手, 然后今天开启代码审计和Docker的学习 我个人感觉先看漏洞利用过程再看漏洞分析 ...

  3. day96:flask:flask-migrate&flask-session&蓝图Blueprint&蓝图的运行机制

    目录 1.flask-migrate 2.flask-session 3.蓝图:Blueprint 4.蓝图的运行机制 1.数据库迁移:flask-migrate 1.Flask的数据库迁移 在开发过 ...

  4. 下载并破解IntelliJ IDEA(2017)

    idea的下载:https://www.jetbrains.com/idea/download/#section=windows 破解链接:http://blog.csdn.net/nn_jbrs/a ...

  5. Spring 对Apache Kafka的支持与集成

    1. 引言 Apache Kafka 是一个分布式的.容错的流处理系统.在本文中,我们将介绍Spring对Apache Kafka的支持,以及原生Kafka Java客户端Api 所提供的抽象级别. ...

  6. Linux 学习笔记01丨Ubuntu系统安装、配置及软件教程集合

    1. Ubuntu系统安装 Windows10安装ubuntu18.04双系统教程 Ubuntu 20.04.1 镜像下载 软碟通 机械革命进入BIOS模式 要按F2,注意将Boot Option中将 ...

  7. Codeforces Round #656 (Div. 3) 题解

    A. Three Pairwise Maximums #构造 题目链接 题意 给定三个正整数\(x,y,z\),要求找出正整数\(a,b,c\),满足\(x=max(a,b), y=max(a,c), ...

  8. 编曲技巧:使用FL Studio来制作停顿的效果

    停顿效果是一种在音乐创作中非常常用的音效,它能起到缓冲的作用,而且能使这段旋律更具节奏感,在比较激情的歌曲中尤为常见.例如知名歌手王力宏演唱的<火力全开>中就使用了停顿效果,为歌曲加了不少 ...

  9. redis cluster可用性测试

    上一节,我们用三台redis组成了cluster,现在我们停掉一台试试: 比较奇怪的是,在停掉其中一台服务器之前建立的链接仍然可以正常执行命令,当我们断开重连时,命令就都被拒绝了: 关联知识: 什么时 ...

  10. High-Resolution Image Inpainting using Multi-Scale Neural Patch Synthesis

    论文来源:CVPR 2017 摘要 之前方法的缺点:之前的方法是基于语义和上下文信息的,在填充较大holes的表现得很好,能够捕获更高级的图像特征,但是由于内存限制和难以训练网络的因素,只能处理分辨率 ...