首页 > 其他 > 详细

老李分享:接电话之uiautomator 2

时间:2016-01-07 18:12:40      阅读:275      评论:0      收藏:0      [点我收藏+]

case解释

 

首先要了解进入uiwatcher方法中的机制,是在你某个控件找不到的情况下会进入。但是你得保证进入以后处理完来电界面以后,这条case得保证正确,那么说明回来以后这个控件要能找到。刚开始的时候,我认为来电后,点击接听,会出现通话画面,这个时候我们来判断该界面上的某一个控件是否存在,这样我们就能保证这条case执行完毕了。但是实验后,是不可以的。uiautomator只会在开始的界面上寻找,像通话界面它只会认为它是个弹出框。所以它会认为case执行失败。

所以后来我想到的解决方案是首先在主页面上找一个控件,点击后是没反应的,这样我就循环去点击。设定一个超时时间和一个标志位flag,让case一直等待着。当来电界面触发后,会进入uiwatcher后,处理完来电界面后,将标志flag设置为false。这样回来后这个控件仍然存在,但是这个时候flag已经为false。所以就不会再循环点击主界面上的控件了。case也会被认为是执行成功了,当不再进入循环后,我们判断一下flag的值。如果为true。说明没有被改变,那么也就没有接收到来电的界面。这个时候也应该判断为case失败。

 

 

 

执行case后的输出

 [exec] INSTRUMENTATION_STATUS: numtests=1
     [exec] INSTRUMENTATION_STATUS: stream=
     [exec] com.sprd.test.uiautomator.call.InCallTest:
     [exec] INSTRUMENTATION_STATUS: id=UiAutomatorTestRunner
     [exec] INSTRUMENTATION_STATUS: test=test_Call
     [exec] INSTRUMENTATION_STATUS: class="com".sprd.test.uiautomator.call.InCallTest
     [exec] INSTRUMENTATION_STATUS: current=1
     [exec] INSTRUMENTATION_STATUS_CODE: 1
     [exec] waiting for incoming
     [exec] you have a call
     [exec] INSTRUMENTATION_STATUS: numtests=1
     [exec] INSTRUMENTATION_STATUS: stream=.
     [exec] INSTRUMENTATION_STATUS: id=UiAutomatorTestRunner
     [exec] INSTRUMENTATION_STATUS: test=test_Call
     [exec] INSTRUMENTATION_STATUS: class="com".sprd.test.uiautomator.call.InCallTest
     [exec] INSTRUMENTATION_STATUS: current=1
     [exec] INSTRUMENTATION_STATUS_CODE: 0
     [exec] INSTRUMENTATION_STATUS: stream=
     [exec] Test results for WatcherResultPrinter=.
     [exec] Time: 17.053
     [exec] OK (1 test)
     [exec] INSTRUMENTATION_STATUS_CODE: -1
BUILD SUCCESSFUL

 

 

后续的扩展

 

既然能监听到来电,那么下一步要实现控制2台机器实现A给B打电话的功能。这个要用到框架啦。

 

老李分享:接电话之uiautomator 2

原文:http://www.cnblogs.com/poptest/p/5110668.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!