Appium appium 测试中无法抓取 toast ,配置 automationName: uiautomator2 ,操作有异常

yajunzheng · 2018年09月05日 · 最后由 Dandi 回复于 2019年03月02日 · 448 次阅读

基于 appium1.8.1+python3.5 进行手机 App 测试过程中,想要抓取 toast 信息来进行断言登录失败进行截图,查看资料说是需要配置 automationName: uiautomator2,但是配置了之后,程序可以运行成功,但是手机 app 启动之后,一直处于登录界面,没有跟着程序的运行而进行相应的操作,只要是把 automationName: uiautomator2 注释掉,app 可以跟着程序进行相应的操作,但是还是抓不到 toast 求大家帮忙解答下,不胜感激

共收到 12 条回复 时间 点赞

日志应该不全吧,看报错是找不到元素?

雨夜狂奔 回复

我提出来的主要是错误的信息,日志内容太多了没完全截图

yajunzheng 回复

你截出来的报错信息就是元素找不到,至于为什么找不到元素没有继续往下执行要看其它日志了,包括 appium 的日志,代码执行日志,最好把相关代码也贴出来大家才好看看为啥了。。

yajunzheng 回复

图一是登录流程的方法,图三是一个用于判断登录失败的方法,图二图四是 appium 的日志,求帮忙看看

没看出来什么问题啊,你捕获异常找不到元素,然后返回 False,后续流程应该就不会走了吧,你用 uiautomator2,然后把查找 toast 的代码注视掉试下,应该是你自己的代码逻辑是不是本来就是这样的。

第一,确定你的 Android 版本是 5.0.+
第二,确定你的元素定位方式是不是 xpath
上面日志确实不太分析的出来具体原因,个人曾经遇到问题解决方法哈,供参考

雨夜狂奔 回复

现在的问题是我不添加 automationName: uiautomator2,登录流程是没有问题的,但是添加完之后,程序可以运行完,但是手机界面没有进行相关的操作

Dodo 回复

手机是魅族安卓 7.0 有些元素定位是 id 定位的,但是我调用的方法也是 by_id 呀,现在的问题是我不添加 automationName: uiautomator2,手机登录流程是没有问题的,但是添加完之后,程序可以运行完,但是手机界面没有进行相关的操作

手机登录本来就可以用默认的自动化引擎,你不添加 uiautomator 2 肯定能登陆,不会报错误错,但是默认的自动化引擎不支持获取 toast 信息,所以你正常运行完,但是没有获取到它(你现在描述的问题和你题目发的问题,有些出入,请确定);虽然很多元素定位都是 by id,但是 toast 这个元素比较特殊,建议你用 XPATH 定位下,还有一个就是你等待的时间间隔也不能设置太长,可以跟你们开发确定,如果太长时间检查一次他是否存在再抓取,这个时间超过 toast 信息显示时间,你也是获取不到这个元素的

Dodo 回复

首先很感谢你用心的回复,非常感谢您!其实我想做的是,登录操作过程中,如果用户名和密码错误的时候,在有 toast 提示出现的瞬间进行截图!我其实不需要定位他,我只想在他出现的瞬间进行截图,但是还没有实现

yajunzheng 回复

请问作者解决了吗,我也遇到了同样的问题,我打开开发者选项里面的指针位置功能,发现运行过程中,点击了页面元素,只是点击后页面没有跳转,我把'automationName': 'uiautomator2'注释掉,就正常了

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册