appium处理toast失败率太高,如何优化降低失败率

最近优化框架发现toast的识别失败率太低了,查看咱们的课程按照课程的改的两个定位方式,toast识别失败率并没有降低,
image


这两种方法都测试过了,识别率没有增加
已经添加了desired_caps[‘automationName’] = ‘UiAutomator2’
我们APP所有的toast显示时间都是3秒,少部分2秒。
还请老师们能提供一个优化方向,提高toast的识别率,增加测试报告的可靠性

可以分析下是否是因为时间长度导致的,如果是可以尝试设置显示等待,或自己封装一个等待


设置得有等待,都是在优化框架了,各种等待在不同场景的使用肯定封装了

你错过toast的原因,多数就是串行执行的时候,上一步的执行到下一步的toast的识别,中间有个消耗,如果时间超过3s就会错过。

这块appium的实现不太好,得修改下设计才可以。让uiautomator底层自动捕获toast并保存到一个记录里,让脚本去获取历史就行了,不应该每次去主动获取的,不然很容易错过toast。

在你不动底层代码的情况下,可以用这个办法实现。在你执行某个操作之前,先提前开启一个后台线程去获得toast,然后再去操作触发toast,这样时间上就来得及了。

校长好!
让uiautomator底层自动捕获toast
这点没有思路(百度和github找了一下午),不知道怎么实现出来,有对应的课程或者资料吗?
目前我做自动化用的都是appium和selenium,其他的还没有真实的项目经验。
还请校长能提供下详细的资料,万分感谢。

直接看appium的uiautomator-server源代码,他里面写了捕获toast的逻辑。修改这个依赖的知识会有点多,你可以先用我之前建议的后台线程的方式。

image
校长好,我找appium里的所有目录,没有找到uiautomator-server源码,能给他路径截图吗?

Android默认的自动化引擎在这里

校长好,你提供的appium引擎我查阅了几个目录


没有找到toast捕获的代码,
问题1:
你上一个回答说的建议后台线程,让这个线程捕获toast的内容,我现在遇到的问题就是不知道toast怎么捕获,不知道怎么实现。能否告知引用什么jar包,什么方法可以捕获toast。
问题2:
我重新起一个线程,初始化对象是谁?是appium的driver调用的?还是初始化一个Uiautomator2对象?

https://github.com/appium/appium-uiautomator2-server/search?q=Toast

这不就是Toast的代码嘛。

按理Toast是可以抓到的,因为底层也是通过一个后台线程去抓取的。我怀疑你要抓取的内容并不是Toast。只是看起来像Toast的其他控件吧?