(注意:本文基于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

探讨UIAutomator测试框架中StaleObjectException异常的触发条件、官方建议及解决方案,详解异常类结构与处理策略。
最低0.47元/天 解锁文章
4928

被折叠的 条评论
为什么被折叠?



