检查并维持设备端守护进程处于运行状态,应该是重启了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

#此函数会影响以下事件clicklong_clickdrag_toget_textset_textclear_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文档(一)的更多相关文章

  1. UIAutomator2的API文档(三)

    1.UI对象识别器Selector 用法d(text='Clock', className='android.widget.TextView') 支持以下参数,详细信息可参考UiSelector Ja ...

  2. UIAutomator2的API文档(二)

    1.设备屏幕事件 熄灭屏幕d.screen_off() 唤醒屏幕d.screen_on() 屏蔽状态d.info.get('screenOn')#返回True or False 解锁屏幕d.unloc ...

  3. Java在DOS命令下的运行及其API文档制作过程

    该文档主要描述java程序在DOS命令下的运行,以及一些常用的命令 常用DOS命令: d: 回车 盘符切换 dir(directory):列出当前目录下的文件以及文件夹 md (make direct ...

  4. 在ASP.NET Core Web API上使用Swagger提供API文档

    我在开发自己的博客系统(http://daxnet.me)时,给自己的RESTful服务增加了基于Swagger的API文档功能.当设置IISExpress的默认启动路由到Swagger的API文档页 ...

  5. 利用sphinx为python项目生成API文档

    sphinx可以根据python的注释生成可以查找的api文档,简单记录了下步骤 1:安装 pip install -U Sphinx 2:在需要生成文档的.py文件目录下执行sphinx-apido ...

  6. 如何使 WebAPI 自动生成漂亮又实用在线API文档

    1.前言 1.1 SwaggerUI SwaggerUI 是一个简单的Restful API 测试和文档工具.简单.漂亮.易用(官方demo).通过读取JSON 配置显示API. 项目本身仅仅也只依赖 ...

  7. Android多媒体--MediaCodec 中文API文档

    *由于工作需要,需要利用MediaCodec实现Playback及Transcode等功能,故在学习过程中翻译了Google官方的MediaCodec API文档,由于作者水平限制,文中难免有错误和不 ...

  8. 新手如何查看API文档?

    Java API文档为例: 1:知道包名,可以在Overview里直接找到这个包,然后去查这个包下面的类和方法.2:知道类名和方法名,可以在Index.html里直接去找这个类或方法,然后查看.3:如 ...

  9. Bullet的学习资源(用Doxygen生成API文档)

    Bullet 全称 Bullet Physics Library,是著名的开源物理引擎(可用于碰撞检测.刚体模拟.可变形体模拟),这里将bullet的学习资源整理一下,希望能帮助入门者少走弯路. 看下 ...

随机推荐

  1. Docker 1.13.0 详细更新日志

    本文讲的是Docker 1.13.0 详细更新日志[编者的话]Docker发布1.13.0版本,此次版本更新内容较多,以下为该版本具体的变更. 构建 添加在构建时可以指定镜像用作高速缓存源的功能. 这 ...

  2. 基于 react 的Java web 应用—— 组件复用(后续需更新)

    前言 实习第二周,被告知要用React与导师进行基于React的Javaweb 的开发,jinzhangaaaaa~由于React 这款框架没学过,看了一峰老师的基础入门教程,硬着头皮开始上了... ...

  3. INTERVIEW #3

    菊厂的面试本来没打算记录,因为当时投的是非技术岗(技术支持).为了全面,就寥做记录. 菊厂的面试因为有口头保密协议,所以不能透露具体题目. 0 群面 简历通过筛选后,会有短信通知去面试. 非技术岗第一 ...

  4. PyCharm 集成 SVN,检出、提交代码

    1.安装 SVN,解决 SVN 目录中没有 svn.exe 问题 重新打开 TortoiseSVN 安装文件 选择 Modify 后在command line client tools 选项修改为 W ...

  5. Centos7增加磁盘空间并挂载目录(VMware)

    1.前言 今天本机vmware在使用docker安装oracle11g时提示nospace空间不足,所以用这篇文章简介下虚拟机如何扩展硬盘并挂载 2.添加新硬盘 依次点击"虚拟机" ...

  6. OSG程序设计之Hello World 2.0

    现在为Hello World添加一些键盘响应事件. //需要多添加两个库:osgGAd.lib.osgd.lib 代码如下: #include <osgDB/ReadFile> #incl ...

  7. 入职半年多,Guide哥总结了这些帮助你领先90%程序员的好习惯!

    大家好,我是 Guide 哥,这篇文章还是不分享技术文章了,我想简单聊聊一些程序员的好习惯. 其实自己写这篇文章还是很忐忑的,毕竟自己算不上一个优秀的程序员,但也不是那么差.大学学习编程 4 年,工作 ...

  8. Java——运算符那些事

    && 逻辑与 &&先运算&&左边的算式,如果为假,则直接停止,后面不管有多少运算式都不再运算,如果为真则继续判断后面的式子,只有所有的条件全部成立,才会 ...

  9. P3355 骑士共存问题 网络流

    骑士共存 题目描述 在一个 n*n个方格的国际象棋棋盘上,马(骑士)可以攻击的棋盘方格如图所示.棋盘上某些方格设置了障碍,骑士不得进入 对于给定的 n*n 个方格的国际象棋棋盘和障碍标志,计算棋盘上最 ...

  10. JavaWebCase

    目录 案例:用户登录 用户登录案例需求 分析 开发步骤 创建项目 创建数据库环境 创建包 com.my.domain,创建类User 创建包 com.my.dao,创建类UsesrDao,提供logi ...