Android之UiAutomator测试框架源码分析(第十八篇:StaleObjectException异常如何解决?)

探讨UIAutomator测试框架中StaleObjectException异常的触发条件、官方建议及解决方案,详解异常类结构与处理策略。

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

前言

    StaleObjectException是使用UI Automator测试框架时,在个别机型(API版本上)上常见的一个异常(经过证实:其实是所有机型),产生时机:当某个Window中的View树中已经找到的View对象(控件),你正在操作它时,突然从界面变为不可见时,如果你继续使用表示该控件的UiObject2对象,会触发1个StaleObjectException异常对象,此异常表示控件在Window中不可见。

    View中个别控件可能因不可见而被“回收”的特性,官方采用抛出StaleObjectExcetion异常的方式提醒我们(表示控件从可见到不可见),这种情况必须需要处理,不然它会导致测试用例直接失败……我们怎么解决StaleObjectException异常呢?

    2024.03.05,之前说的不严谨,其实在每个机型上都有可能出现该异常,它表示什么呢?请继续往下看,另外抛出一个深度思考的问题,为啥要有StaleObjectException!!

StaleObjectException什么时候出现?

1、使用UiObject2的任意API

2、任何机器、系统

3、某个window中的View树中某个控件被回收了

这3个条件同时发生时,你一定会碰见StaleObjectException

官方建议

    当使用表示控件的UiObject2对象的API时,可能会触发一个StaleObjectException异常,这是因为底层的View已被销毁(多数情况是因为控件不可见),发生这种情况时,你有必要使用UiDevice的findObject(BySelector)方法再次重新获取同一个UiObject2对象(再次获取控件)

  &nb

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值