Uiautomator 2.0之UiWatcher类学习小记

1. 主要功能

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

2. 相关API

 

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


3.简单示例

 

3.1 用例代码

 1 @Test
 2     public void testCase09() throws InterruptedException {
 3 
 4         final UiObject2 ui = mDevice.findObject(By.text("短信"));
 5         //注册监听器
 6         mDevice.registerWatcher("testWatcher", new UiWatcher() {
 7             @Override
 8             public boolean checkForCondition() {
 9                 if(mDevice.hasObject(By.text("联系人"))){
10                     ui.click();
11                     Log.i("testWatcher", "监听器被触发了");
12                     return true;
13                 }
14                 Log.i("testWatcher", "监听器未被触发");
15                 return false;
16             }
17         });
18 
19         //运行用例步骤
20         mDevice.wait(Until.findObject(By.text("写短信")), 2000);
21         UiObject2 btn = mDevice.findObject(By.text("写短信"));
22         btn.click();
23         Thread.sleep(2000);
24         mDevice.pressBack();
25 
26         //重置监听器
27         mDevice.resetWatcherTriggers();
28         mDevice.wait(Until.findObject(By.text("写短信")), 2000);
29         btn.click();
30         Thread.sleep(2000);
31         mDevice.pressBack();
32         Log.i("testWatcher", "重置监听器成功");
33 
34         //移除监听器
35         mDevice.removeWatcher("testWatcher");
36         Log.i("testWatcher", "移除监听器成功");
37         mDevice.wait(Until.findObject(By.text("写短信")), 2000);
38         btn.click();
39         Thread.sleep(2000);
40         mDevice.pressBack();
41 
42     }

3.2 运行结果

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

posted @ 2016-11-25 16:56  快乐生活740  阅读(530)  评论(0)    收藏  举报