基于 appium1.8.1+python3.5 进行手机 App 测试过程中,想要抓取 toast 信息来进行断言登录失败进行截图,查看资料说是需要配置 automationName: uiautomator2,但是配置了之后,程序可以运行成功,但是手机 app 启动之后,一直处于登录界面,没有跟着程序的运行而进行相应的操作,只要是把 automationName: uiautomator2 注释掉,app 可以跟着程序进行相应的操作,但是还是抓不到 toast 求大家帮忙解答下,不胜感激
日志应该不全吧,看报错是找不到元素?
你截出来的报错信息就是元素找不到,至于为什么找不到元素没有继续往下执行要看其它日志了,包括 appium 的日志,代码执行日志,最好把相关代码也贴出来大家才好看看为啥了。。
图一是登录流程的方法,图三是一个用于判断登录失败的方法,图二图四是 appium 的日志,求帮忙看看
没看出来什么问题啊,你捕获异常找不到元素,然后返回 False,后续流程应该就不会走了吧,你用 uiautomator2,然后把查找 toast 的代码注视掉试下,应该是你自己的代码逻辑是不是本来就是这样的。
第一,确定你的 Android 版本是 5.0.+
第二,确定你的元素定位方式是不是 xpath
上面日志确实不太分析的出来具体原因,个人曾经遇到问题解决方法哈,供参考
现在的问题是我不添加 automationName: uiautomator2,登录流程是没有问题的,但是添加完之后,程序可以运行完,但是手机界面没有进行相关的操作
手机是魅族安卓 7.0 有些元素定位是 id 定位的,但是我调用的方法也是 by_id 呀,现在的问题是我不添加 automationName: uiautomator2,手机登录流程是没有问题的,但是添加完之后,程序可以运行完,但是手机界面没有进行相关的操作
手机登录本来就可以用默认的自动化引擎,你不添加 uiautomator 2 肯定能登陆,不会报错误错,但是默认的自动化引擎不支持获取 toast 信息,所以你正常运行完,但是没有获取到它(你现在描述的问题和你题目发的问题,有些出入,请确定);虽然很多元素定位都是 by id,但是 toast 这个元素比较特殊,建议你用 XPATH 定位下,还有一个就是你等待的时间间隔也不能设置太长,可以跟你们开发确定,如果太长时间检查一次他是否存在再抓取,这个时间超过 toast 信息显示时间,你也是获取不到这个元素的
首先很感谢你用心的回复,非常感谢您!其实我想做的是,登录操作过程中,如果用户名和密码错误的时候,在有 toast 提示出现的瞬间进行截图!我其实不需要定位他,我只想在他出现的瞬间进行截图,但是还没有实现
请问作者解决了吗,我也遇到了同样的问题,我打开开发者选项里面的指针位置功能,发现运行过程中,点击了页面元素,只是点击后页面没有跳转,我把'automationName': 'uiautomator2'注释掉,就正常了