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

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

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


共收到 12 条回复 时间 点赞

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

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

yajunzheng #2 回复

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

yajunzheng #4 回复

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

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

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

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

Dodo #7 回复

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

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

Dodo #10 回复

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

yajunzheng #11 回复

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

需要 登录 後方可回應,如果你還沒有帳號按這裡 注册