uiautomator-----UiWatcher监听器
一、UiWatcher类说明
1、Uiwatcher用于处理脚本执行过程中遇到非预想的步骤
2、UiWatcher使用场景
1)测试过程中来了一个电话
2)测试过程中来了一条短信
3)测试过程中闹钟响了
4)出现各种非预想的步骤
3、中断监听检查条件
public boolean checkForCondition();
二、UiWatcher监听器操作相关API
在测试框架无法找到一个匹配时,使用UiSelector测试框架将自动调用此处理程序方法。在超时未找到匹配项时,框架调用checkForCondition()方法查找设备上的所有已注册的监听检查条件。可以使用此方法来处理中断问题保证测试用例正常运行。
| 返回值 | API | 说明 |
| void | registerWatcher(String name,Uiwatcher watcher) | 注册一个监听器,当Uiselector无法匹配到对象的时候,触发监听器 |
| void | removeWatcger(String name) | 取消之前注册的指定监听器 |
| void | resetWatcherTriggers() | 充值已触发过的UiWatcher,重置后相当于没运行过 |
| void | runWatchers() | 强制运行所有的监听器 |
三、注册监听器示例代码
public void testDemo() throws IOException, UiObjectNotFoundException {
////////////////////注册监听器////////////////
/////////////////////////////////////////////
UiDevice.getInstance().registerWatcher("phone",new UiWatcher(){
@Override
public boolean checkForCondition(){
//电话监听
UiObject call = new UiObject(new UiSelector().resourceId("com.android.incallui:id/unlock_answer_text").text("接听"));//由接听按钮判断为来电
UiObject call_reject = new UiObject(new UiSelector().resourceId("com.android.incallui:id/unlock_reject"));//挂断按钮
if(call.exists()){
System.out.println("电话监听器被触发啦!!!!");
try{
call_reject.click();
return true;
}catch(UiObjectNotFoundException e){
e.printStackTrace();
}
}
return false;
}
} );
////////////监听器注册移除////////////
/////////////////////////////////////
UiDevice.getInstance().removeWatcher("phone");//移除之后,后面的测试过程中有电话拨进来,不会调用监听器
////////////////////////////////////////////////////
/////////////////常规测试用例开始///////////////////
//////////////////////////////////////////////////
}
| 返回值 | API | 说明 |
| boolean | hasAnyWatcherTriggered() | 检查是否有监听器触发过 |
| boolean | hasWatcherTriggered(String watcgerName) | 检查某个特定的监听器是否触发过 |
//////////检查监听器是否被触发过/////////////
///////////////////////////////////////////
System.out.println("是否有监听器触发过:" + UiDevice.getInstance().hasAnyWatcherTriggered());
System.out.println("电话监听器是否被触发过:" + UiDevice.getInstance().hasWatcherTriggered("phone"));
注意一:
检查监听器代码卸载所有的正常测试用例代码之后,在测试完成之后,打印是否触发过监听器。
uiautomator-----UiWatcher监听器的更多相关文章
- Android无线测试之—UiAutomator UiWatcher API介绍一
UiWatcher类介绍与中断监听检查条件 一.UiWatcher类说明 1.Uiwatcher用于处理脚本执行过程中遇到非预想的步骤 2.UiWatcher使用场景 1)测试过程中来了一个电话 2) ...
- [uiautomator篇] UiWatcher的使用
//package com.softwinner.pad.mark3d; package com.softwinner.performance.benchmark.mark3d; import and ...
- [uiautomator篇] 基类
package com.softwinner.performance.benchmark; /** * UiAssistant public class * @author liuzhipeng ...
- UI Automator 常用 API 整理
主要类: import android.support.test.uiautomator.UiDevice; 作用:设备封装类,测试过程中获取设备信息和设备交互. import android.sup ...
- UI Watcher 解决不定时弹窗问题
缘来是你: 在基于UI谷歌库的测试系统对第三方APK测试例,存在不定时弹窗问题,对测试例的健壮性和稳定性产生了很大影响. 为了解决这个问题,谷歌开源了UIwatcher 类来解决此问题. 附谷歌官网类 ...
- Uiautomator 2.0之UiWatcher类学习小记
1. 主要功能 使用此方法可以处理中断问题,从而保证测试用例的正常运行. 2. 相关API API 说明 registerWatcher (String name, UiWatcher watcher ...
- [uiautomator篇]uiwatcher 的使用场景
http://www.yangyanxing.com/article/use-watcher-in-uiautomator.html 今天在uiautomator中实践了watcher的用法,这个 ...
- UiAutomator自动化测试框架介绍
UiAutomator自动化测试框架介绍 环境搭建 1 必要条件 1.1 JDK 1.2 SDK(API高于15) 1.3 Eclipse 2 ...
- android app自动化测试之UIAutomator
一.UIAutomator Android自动化测试工具有很多,但是要免费.易上手,本人觉得就直接使用Eclipse自带的UIAutomator就不错.测试人员无需跟开发要代码信息,只要手机上有安装之 ...
随机推荐
- 篇三:MySQL分页
分页:物理分页.逻辑分页 物理分页:SQL语句中直接使用limit 逻辑分页:先查询出所有满足条件的数据,然后在Java中截取需要的行 优缺点: 1.逻辑分页翻页速度快,第一次查询出来的数据会有缓存, ...
- C程序设计语言学习笔记
在Windows下运行C语言程序 Windows下的编程工具使用 VC 6.0,下面讲解如何在VC 6.0下运行上节的"Hello, world"程序. 1) 新建Win32 Co ...
- 通俗理解Android事件分发与消费机制
深入:Android Touch事件传递机制全面解析(从WMS到View树) 通俗理解Android事件分发与消费机制 说起Android滑动冲突,是个很常见的场景,比如SliddingMenu与Li ...
- 星型数据仓库olap工具kylin介绍
星型数据仓库olap工具kylin介绍 数据仓库是目前企业级BI分析的重要平台,尤其在互联网公司,每天都会产生数以百G的日志,如何从这些日志中发现数据的规律很重要. 数据仓库是数据分析的重要工具, 每 ...
- Centos7 下面安装 MySql 客户端
Workench 是官发发布的Mysql客户端,是Linux下面比较通用的了, 如果使用X界面,可以试着熟悉下. 下载链接: http://cdn.mysql.com//Downloads/MySQL ...
- Android环境变量配置
第一步: 把这些东西全部准备好!然后jdk怎么安装我相信大家都知道.安装好jdk之后,我们来配置环境变量. 我的电脑—右键—属性—高级系统设置—环境变量 JAVA_HOME环境变量.它指向jdk的安装 ...
- 小猪cms模块继承
TextAction 继承 UserAction 继承 BaseAction 继承 Action TextAction 路径 PigCms\Lib\Action\User UserAction 路径 ...
- AndroidStudio开发环境配置-Windows
Android Studio开发环境配置-Windows 最近突发奇想,开始研究Android开发.开始时使用Eclipse作为开发IDE,结果各种不好使,首先下载和安装SDK,以及不同版本的Imag ...
- RocketMQ原理解析-Remoting
Remoting2. 通信层底层传输协议 RocketMq服务器与客户端通过传递RemotingCommand来交互,通过NettyDecoder,对RemotingCommand进行协议的编码与解码 ...
- 【实践】Memcached实例解析
一.关于Memcached Memcached是一个自由开源的,高性能,分布式内存对象缓存系统. Memcached是一种基于内存的Key-Value存储,用来存储小块的任意数据(字符串.对象).这些 ...