UIAutomator2的API文档(一)
检查并维持设备端守护进程处于运行状态,应该是重启了atx守护进程:d.healthcheck()
1.隐式等待
import uiautomator2 as u2
serialno = '7f3dec60'
d = u2.connect_usb(serialno)
d.implicitly_wait(3.0)
#3秒内未找到“搜索”按钮,则抛出错误uiautomator2.exceptions.UiObjectNotFoundError: -32002 Client error: <> data: , method: None
#此函数会影响以下事件click
, long_click
, drag_to
, get_text
, set_text
, clear_tex
d(text="搜索").click()#找到此按钮则直接点击
2.App启停基本操作
2.1安装app(仅支持从URL安装apk):d.app_install('http://some-domain.com/some.apk')
卸载app:d.app_uninstall(pk_name)
2.2启动app:d.app_start(package_name)
2.3停止app:d.app_stop(package_name) #等同于`am force-stop`强制停止app,可能会丢失数据
d.app_clear(package_name)#等同于`pm clear`
2.4停止所有app:d.app_stop_all(excludes=[package_name])#停止所有app除了括号内的,括号内容可选
2.5获取app信息:d.app_info(package_name)
保存app icon:img=d.app_icon(pkname)
img.save("icon.png")
3.文件推送/拉取
3.1推送文件到设备中:d.push("foo.txt", "/sdcard/")
3.2推送文件并重命名:d.push("foo.txt", "/sdcard/bar.txt")
3.3推送文件对象:with open("foo.txt", 'rb') as f:
d.push(f, "/sdcard/")
3.4推送并改变文件访问权限:d.push("foo.sh", "/data/local/tmp/", mode=0o755)
3.5从设备中拉取文件到本地:d.pull("/sdcard/tmp.txt", "tmp.txt")
3.6从设备中拉取的文件不存在时 抛出错误:FileNotFoundError:d.pull("/sdcard/some-file-not-exists.txt", "tmp.txt")
这里顺便说下快速获取apk相关包名信息的一些简易方法
a.获取包名:d.app_stop_all(),会列出一个当前打开的所有app的包名列表;
print(d.current_app()) 打印当前运行的app信息
b.命令行打印安装的所有包:adb shell pm list packages -3
c.打印安装包路径:adb shell pm path "包名"
d.打印安装包信息:aapt d badging "apk包路径"
4.自动点击权限对话框
官方说:disable_popups函数,检测发现很不稳定,暂时不要使用--一会儿试试看
d.disable_popups() #自动跳过弹出框
d.disable_popups(False) # 禁用自动跳过
如果此方法无法在你的设备上运行,可以按如下步骤操作获取控件
4.1打开Open uiautomatorviewer.bat
4.2获取弹出框hierarchy
5.执行shell命令
output, exit_code = d.shell("pwd", timeout=60) # timeout 60s (Default)
# output: "/\n", exit_code: 0
# Similar to command: adb shell pwd
# Since `shell` function return type is `namedtuple("ShellResponse", ("output", "exit_code"))`
# so we can do some tricks
output = d.shell("pwd").output
exit_code = d.shell("pwd").exit_code
The first argument can be list. for example
output, exit_code = d.shell(["ls", "-l"])
# output: "/....", exit_code: 0
6.通过会话操作app
启动微信:sess=d.session("com.tencent.mm")
停止微信:sess.close()
使用python操作app,打开微信→点击腾讯新闻→关闭app
with d.session("com.tencent.mm") as sess:
sess(text="腾讯新闻").click()
添加app到正在运行状态:sess=d.session("包名",attach=True)
检查app运行状态:sess.running() #返回True或False
7.获得设备基本信息
设备概要信息:d.info
设备详细信息:d.device_info
设备窗口尺寸:d.window_size()
当前运行app信息:d.current_app()
设备序列号:d.serial
设备Wlanip:d.wlan_ip
等待Activity:d.wait_activity("com.tencent.mm.ui.LauncherUI",timeout=5)#若不设置默认超时10秒,返回True or False
UIAutomator2的API文档(一)的更多相关文章
- UIAutomator2的API文档(三)
1.UI对象识别器Selector 用法d(text='Clock', className='android.widget.TextView') 支持以下参数,详细信息可参考UiSelector Ja ...
- UIAutomator2的API文档(二)
1.设备屏幕事件 熄灭屏幕d.screen_off() 唤醒屏幕d.screen_on() 屏蔽状态d.info.get('screenOn')#返回True or False 解锁屏幕d.unloc ...
- Java在DOS命令下的运行及其API文档制作过程
该文档主要描述java程序在DOS命令下的运行,以及一些常用的命令 常用DOS命令: d: 回车 盘符切换 dir(directory):列出当前目录下的文件以及文件夹 md (make direct ...
- 在ASP.NET Core Web API上使用Swagger提供API文档
我在开发自己的博客系统(http://daxnet.me)时,给自己的RESTful服务增加了基于Swagger的API文档功能.当设置IISExpress的默认启动路由到Swagger的API文档页 ...
- 利用sphinx为python项目生成API文档
sphinx可以根据python的注释生成可以查找的api文档,简单记录了下步骤 1:安装 pip install -U Sphinx 2:在需要生成文档的.py文件目录下执行sphinx-apido ...
- 如何使 WebAPI 自动生成漂亮又实用在线API文档
1.前言 1.1 SwaggerUI SwaggerUI 是一个简单的Restful API 测试和文档工具.简单.漂亮.易用(官方demo).通过读取JSON 配置显示API. 项目本身仅仅也只依赖 ...
- Android多媒体--MediaCodec 中文API文档
*由于工作需要,需要利用MediaCodec实现Playback及Transcode等功能,故在学习过程中翻译了Google官方的MediaCodec API文档,由于作者水平限制,文中难免有错误和不 ...
- 新手如何查看API文档?
Java API文档为例: 1:知道包名,可以在Overview里直接找到这个包,然后去查这个包下面的类和方法.2:知道类名和方法名,可以在Index.html里直接去找这个类或方法,然后查看.3:如 ...
- Bullet的学习资源(用Doxygen生成API文档)
Bullet 全称 Bullet Physics Library,是著名的开源物理引擎(可用于碰撞检测.刚体模拟.可变形体模拟),这里将bullet的学习资源整理一下,希望能帮助入门者少走弯路. 看下 ...
随机推荐
- 地表最强的MySQL安装一键式安装,信不信你下完我就给你装好!附各种Mysql安装失败的解决办法(什么你安装失败了?快来看这个)
这里还有数据库相关的优质文章:快戳我,快戳我
- python——random.sample()的用法
写脚本过程中用到了需要随机一段字符串的操作,查了一下资料,对于random.sample的用法,多用于截取列表的指定长度的随机数,但是不会改变列表本身的排序: list = [0,1,2,3,4] r ...
- requests抓取数据示例
1:获取豆瓣电影名称及评分 # 抓取豆瓣电影名称及评分 url="https://movie.douban.com/j/search_subjects" start=input(& ...
- 2020牛客寒假算法基础集训营1 J题可以回顾回顾
2020牛客寒假算法基础集训营1 这套题整体来说还是很简单的. A.honoka和格点三角形 这个题目不是很难,不过要考虑周全,面积是1,那么底边的长度可以是1也可以是2, 注意底边1和2会有重复的, ...
- 在web中使用shiro(会话管理,登出,shiro标签库的使用)
在shiro的主配置文件中配置,登出的请求经过的过滤器就可以了,在shiro的过滤器中有一个名称为logout的过滤 器专门为我们处理登出请求: 一.shiro会话管理器 shiro中也提供了类似于w ...
- 你离高薪 offer 只差一个Redis入门,我是认真的
说起来,可能有些小伙伴会不相信,我是第一次用 Redis,真的.因为公司小,业务量小,Redis 根本派不上用场.不过,最近打算把系统升级一下,顺带把当下时髦的技术入个门,"与时俱进&quo ...
- 第三家面试过程,及导出elcel的进一步小结。(8月11号 周五)
今天收到第三家公司的面试通知,面试地址也在民治附近,面试时间是上午十点.今早又失眠了,感觉到这边这么几天,总是天天失眠,晚上睡不好白天瞌睡睡不着,估计还需要些许时间的适应,早上七点多我整理好面试需要准 ...
- Algorithms - Priority Queue - 优先队列
Priority queue - 优先队列 相关概念 Priority queue优先队列是一种用来维护由一组元素构成的集合S的数据结构, 其中的每一种元素都有一个相关的值,称为关键字(key). 一 ...
- [hdu4627 The Unsolvable Problem]数论
题意:给一个数n,找一个正整数x<n,使得x和n-x的最小公倍数最大. 思路:显然x和n-x越接近越好,gcd必须为1(贪心).从大到小考虑x,如果n为奇数,则答案就是x=n/2,如果n为偶数, ...
- 在ef core中使用postgres数据库的全文检索功能实战之中文支持
前言 有关通用的postgres数据库全文检索在ef core中的使用方法,参见我的上一篇文章. 本文实践了zhparser中文插件进行全文检索. 准备工作 安装插件,最方便的方法是直接使用安装好插件 ...