1. 主要功能

使用此方法可以处理中断问题,从而保证测试用例的正常运行。

2. 相关API

API 说明
registerWatcher (String name, UiWatcher watcher) 注册一个监听器,当无法匹配到对象的时候,触发监听器
removeWatcher (String name) 取消之前注册的指定的监听器
resetWatcherTriggers () 重置已出发过的UiWatcher
runWatchers () 运行所有的监听器

3.简单示例

3.1 用例代码

 @Test
public void testCase09() throws InterruptedException { final UiObject2 ui = mDevice.findObject(By.text("短信"));
//注册监听器
mDevice.registerWatcher("testWatcher", new UiWatcher() {
@Override
public boolean checkForCondition() {
if(mDevice.hasObject(By.text("联系人"))){
ui.click();
Log.i("testWatcher", "监听器被触发了");
return true;
}
Log.i("testWatcher", "监听器未被触发");
return false;
}
}); //运行用例步骤
mDevice.wait(Until.findObject(By.text("写短信")), 2000);
UiObject2 btn = mDevice.findObject(By.text("写短信"));
btn.click();
Thread.sleep(2000);
mDevice.pressBack(); //重置监听器
mDevice.resetWatcherTriggers();
mDevice.wait(Until.findObject(By.text("写短信")), 2000);
btn.click();
Thread.sleep(2000);
mDevice.pressBack();
Log.i("testWatcher", "重置监听器成功"); //移除监听器
mDevice.removeWatcher("testWatcher");
Log.i("testWatcher", "移除监听器成功");
mDevice.wait(Until.findObject(By.text("写短信")), 2000);
btn.click();
Thread.sleep(2000);
mDevice.pressBack(); }

3.2 运行结果

原创:http://blog.csdn.net/swordgirl2011/article/details/51010683

Uiautomator 2.0之UiWatcher类学习小记的更多相关文章

  1. Uiautomator 2.0之BySelector类学习小记

    1. BySelector与By静态类 1.1 BySelector类为指定搜索条件进行匹配UI元素, 通过UiDevice.findObject(BySelector)方式进行使用. 1.2 By类 ...

  2. Uiautomator 2.0之Configrator类学习小记

    1. Configration类介绍 1.1. Configrator用于设置脚本动作的默认延时 1.2  Configrator功能: 1.2.1 可调节两个模拟动作之间的默认间隔 1.2.2 可调 ...

  3. Uiautomator 2.0之UiObject2类学习小记

    1. 基础动作 1.1. 相关API介绍 API 说明 clear() 清楚编辑框内的内容 click() 点击一个对象 clickAndWait(EventCondition<R> co ...

  4. Uiautomator 2.0之Until类学习小记

    1. 状态条件-Uiobject2Condtion 1.1 一个UiObject2Condition代表UiObject2满足某个条件的特定状态,主要用于获取到组件释放处于某种状态. 1.2 简单示例 ...

  5. CSS学习小记

    搜狗主页页面CSS学习小记 1.边框的处理   要形成上图所示的布局效果,即,点选后,导航下面的边框不显示而其他的边框形成平滑的形状.相对于把导航的下面边框取消然后用空白覆盖掉下面搜索栏的边框比较而言 ...

  6. mongodb入门学习小记

    Mongodb 简单入门(个人学习小记) 1.安装并注册成服务:(示例) E:\DevTools\mongodb3.2.6\bin>mongod.exe --bind_ip 127.0.0.1 ...

  7. 【转】Date类学习总结(Calendar Date 字符串 相互转换 格式化)

    原文网址:http://www.blogjava.net/jerry-zhaoj/archive/2008/10/08/233228.html Date类学习总结 1.计算某一月份的最大天数 Cale ...

  8. Gcd&Exgcd算法学习小记

    Preface 对于许多数论问题,都需要涉及到Gcd,求解Gcd,常常使用欧几里得算法,以前也只是背下来,没有真正了解并证明过. 对于许多求解问题,可以列出贝祖方程:ax+by=Gcd(a,b),用E ...

  9. Uiautomator - 6.0 以上权限受限问题

    问题:在android studio中使用UiAutomator 2.0 编写测试用例时,要实现截图(非命令方式),写入文件时出现权限被拒绝的提示.例如: java.io.FileNotFoundEx ...

随机推荐

  1. js 实现表格的可编辑状态

    实现表格的可编辑,点击修改以后可以编辑,代码如下: <!DOCTYPE HTML> <html> <head> <meta charset="utf ...

  2. 面筋BD

    /****************************************************************************** *时间:2016/9/25 11:00 ...

  3. iOS 检测状态栏点击事件

    当tableView.scrollsToTop=YES不管用时,可以使用以下方法实现点击状态栏使tableView滚动到顶部. - (void) touchesBegan:(NSSet *)touch ...

  4. 基于2D-RNN的鲁棒行人跟踪

    基于2D-RNN的鲁棒行人跟踪 Recurrent Neural Networks RNN 行人跟踪 读"G.L. Masala, et.al., 2D Recurrent Neural N ...

  5. js闭包演示

    有个网友问了个问题,如下的html,为什么每次输出都是5 <html > <head> <meta http-equiv="Content-Type" ...

  6. XVII Open Cup named after E.V. Pankratiev. GP of SPb

    A. Array Factory 将下标按前缀和排序,然后双指针,维护最大的右边界即可. #include<cstdio> #include<algorithm> using ...

  7. 德国W家HIPP 奶粉有货播报:2014.7.8 HIPP 奶粉 1+ 4盒装有货啦!

    德国W家HIPP 奶粉有货播报:2014.7.8 HIPP 奶粉 1+ 4盒装有货啦!

  8. [BZOJ2072][POI2004] MOS过桥

    Description 一个夜晚一些旅行者想要过桥. 他们只有一个火把. 火把的亮光最多允许两个旅行者同时过桥. 没有火把或者多于2个人则不能过桥.每个旅行者过桥都需要特定的时间, 两个旅行者同时过桥 ...

  9. BestCoder Round 69 Div 2 1001&& 1002 || HDU 5610 && 5611

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=5610 如果杠铃总质量是奇数直接impossible 接着就考验耐心和仔细周全的考虑了.在WA了三次后终于发 ...

  10. python lxml install

    之前记得安装libxslt和libxml yum install libxml* -yyum install libxslt* -y wget http://lxml.de/files/lxml-3. ...