Android之UiAutomator测试框架源码分析(第二十三篇:UiObject2提供的等待功能分析)

(注意:本文基于UI Automator测试框架版本为2.2.0)

   UiDevice提供了等待功能,UiObject2也提供了等待功能,本篇学习UiObject2的等待功能是如何实现的?等待条件满足后插桩测试继续执行,我们在写测试用例的过程中必须要使用等待功能,因为界面中的控件出现时机是不可控的,尤其是待有动画的界面,笔者曾经遇到过的偶现问题,有相当一部分是动画引起的。

三个等待功能

1、clickAndWait(EventCondition,long)方法

传入参数为1个EventCondtion对象,我们使用Until类提供的两个静态工厂方法即可获得EventCondition对象,另外一个long类型的参数表示等待的最长时间

    public <R> R clickAndWait(EventCondition<R> condition, long timeout) {
        return mGestureController.performGestureAndWait(condition, timeout,
                mGestures.click(getVisibleCenter()));
    }

该功能依赖UiObject2对象持有的Gestures对象mGestures、以及GestureController对象mGestureConroller

2、wait(SearchCondtion,long)方法

UiObject2对象可以作为查找控件的起始控件,即以当前UiObject2为根结点的View树中查找控件。它接受两个参数,一个是SearchConditon对象,另一个long类型的参数表示等待的最长时间

    public <R> R wait(SearchCondition<R> condition, long timeout) {
        return mWaitMixin.wait(condition, timeout);
    }

等待功能完全依赖UiObject2对象持有的一个WaitMixin对象mWaitMixin,此对象与UiDevice持有的对象,类型一样!

3、wait(UiObject2Condtion,long)方法

UiObject2表示某个控件,而控件有很多属性,该方法以控件的属性作为等待的条件,即传入的UiObject2Condition对象,另外一个参数则为等待的最长时间

    public <R> R wait(UiObject2Condition<R> condition, long timeout) {
        return mWaitMixin.wait(condition, timeout);
    }

此等待功能也是完全依赖UiObject2对象持有的一个WaitMixin对象mWaitMixin!

总结

1、clickAndWait()方法,当给定条件满足后,等待结束,然后会触发一个点击事件,结果是boolean值,点击成功返回true!

2、wait(SearchCondtion,long)方法,则是给定的查找控件条件满足后,不再继续等待,此方法最终返回的对象与条件对象相关,一般情况下为boolean值或者UiObject2对象!(备注:参考Until中返回SearchCondition的静态方法)

3、wait(UiObject2Condtion,long)方法,给定的控件状态条件满足后,不再继续等待,此方法的最终返回值与条件对象相关,一般情况下为boolean值!(备注:参考Until中返回UiObject2Condition的静态方法)

4、两个重载的wait()方法与UiDevice的实现一样,都依赖持有的一个WaitMixin对象。具体WaitMixin类的实现,我已经在单独的文章中进行了总结!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值