【uiautomator2】验证toast弹框失败,如何解决

相同的代码,在本地电脑执行正确。

换了一台电脑执行,验证toast弹框频频报错。

打印log后发现toast居然有缓存(无语。。。。。)

 

使用下面语句,在验证成功后及时清除缓存,就能正常执行了

# clear cached toast
d.toast.reset()

 

 

注:文章内容主要是记录学习过程中遇到的一些问题,以及解决方法。留个记录,同时分享给有需要的人。如有不足之处,欢迎指正,谢谢!  

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Uiautomator2是一个Android UI自动化测试框架,它允许开发者编写脚本来控制设备的UI元素。如果你想要通过uiautomator2监控Toast消息,首先要知道的是,Toast通常是非常短暂的系统通知,并不容易直接捕获到,因为它不是可见的常规UI组件。 然而,你可以尝试以下几个步骤来间接检测或猜测 Toast 是否出现: 1. **观察焦点变化**:当一个 Toast 出现时,屏幕会暂时失去焦点。你可以监听 `Activity` 对象上的 `onWindowFocusChanged()` 方法,如果失去焦点后紧接着又恢复,这可能是 Toast 显示的结果。 ```python watcher = am.device.Watcher() watcher.watch(am.device.UiObject(text='你的Toast文本'), lambda obj, event: ...) activity.on_window_focus_changed += watcher ``` 2. **搜索特定区域**:有时 Toast 可能会被放置在屏幕上某固定的位置,如顶部或底部。你可以设置一个定时器,在这个区域内查找新的 UI 元素出现。 ```python from time import sleep def check_toast(): try: toast = am.device.find_object(text='你的Toast文本', className='android.widget.Toast') # 如果找到则处理... except uiautomator2.exceptions.NoObjectFoundError: pass sleep(0.5) # 检查频率 while True: check_toast() ``` 3. **检查事件日志**:某些情况下,Android的日志可能会记录 Toast 的显示,你可以通过抓取日志来查找相关信息。 需要注意的是,以上方法并不完全可靠,因为 Toast 实际上是操作系统内部的行为,而并非公开暴露的 API,所以可能存在不确定性。如果需要精确控制 Toast 或获取其确切信息,建议查阅 Android 官方文档或其他第三方库提供的解决方案,比如 Espresso 或 Robolectric 等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值