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就不错.测试人员无需跟开发要代码信息,只要手机上有安装之 ... 
随机推荐
- 冰冻三尺非一日之寒--web框架Django
			1.JS 正则 test - 判断字符串是否符合规定的正则 rep = /\d+/; rep.test("asdfoiklfasdf89asdfasdf ... 
- [转]Pythoin中的Lambda表达式
			引用自:http://www.cnblogs.com/evening/archive/2012/03/29/2423554.html 在学习python的过程中,lambda的语法时常会使人感到困惑, ... 
- BeautifulSoup :功能使用
			# -*- coding: utf-8 -*- ''' # Author : Solomon Xie # Usage : 测试BeautifulSoup一些用法及容易出bug的地方 # Envirom ... 
- Collection集合的功能及总结
			Collection集合是集合顶层接口,不能实例化 功能 1.添加功能 boolean add(Object obj):添加一个元素 boolean addAll(Collection c):添加一个 ... 
- 【转】PHP中获取当前系统时间、时间戳
			今天写下otime($time, $now)为将时间格式转为时间戳,$time为必填.清楚了这个,想了解更多,请继续往下看. 3. date($format)用法比如:echo date('Y-m-d ... 
- sqlserver多文件组数据库的备份和还原实战
			数据库文件过大时就要进行数据分区,就是讲数据库拆分到多个文件组中.已方便数据文件管理,提高数据库的读取效能,多文件组如何进行数据库的备份和还原呢,今天主要做多文件组数据库的备份和还原实验. 第一步 创 ... 
- OperateLoger
			protected void Page_Load(object sender, EventArgs e) { OperateLoger.FunctionInfo =new FunctionInfo { ... 
- JS提交对象数组到服务端的方法总结(C#实例)
			*转载请注明出处: 作者:willingtolove: 本文链接:http://www.cnblogs.com/willingtolove/p/4741549.html 正文: 1. 方法一:利用aj ... 
- hdu1282回文数猜想
			Problem Description 一个正整数,如果从左向右读(称之为正序数)和从右向左读(称之为倒序数)是一样的,这样的数就叫回文数.任取一个正整数,如果不是回文数,将该数与他的倒序数相加,若其 ... 
- PJAX的实现与应用
			一.前言 web发展经历了一个漫长的周期,最开始很多人认为Javascript这们语言是前端开发的累赘,是个鸡肋,那个时候人们还享受着从一个a链接蹦 到另一个页面的web神奇魔术.后来随着JavaSc ... 
