使用 appium 做 UI 自动化测试
如上图,有没有办法屏蔽安卓的弹窗浮层呢?因为这个是后台配置的,每次弹出浮层的时间不一样,次数也不一样,而且下面那个关闭的元素定位每次也不同
叫安卓单独打个包,去掉这些浮层,但是总感觉比较麻烦,请问有没有更好的办法?
方案 1:如果是用 espresso 来做的话,这个叉叉是可以准确识别的,没有识别不到的情况
方案 2:native 识别 + 图像识别互相补充去识别这个叉叉,兼容性取决于图像识别的能力,难度较高
方案 3:相对识别,先找到上面的大控件,再往下找这个叉叉
提供一个思路:如果点不到要测试的元素(弹窗处在最前面),尝试查看有没有弹窗,如果有就关掉继续做你的测试
1 我的思路是:开发模式中有个观察者模式,如果发现不到理想的空间就上报给监控 watcher, 然后每个 case 注册响应的监控处理就可以了
这个思想办法有点像 uiautomator 的 watcher 组件
应用上的代码就可以完善,框架设计模式优化下,不需要考虑底层的代码
2 笨一点的:多线程,一直轮询
上面的 try 不适合,那抛异常的话就不能继续执行下面的代码了
3 再笨一点就是写个方法,脚本里多次调用看是不是弹出这个
方案 1:如果是用 espresso 来做的话,这个叉叉是可以准确识别的,没有识别不到的情况
方案 2:native 识别 + 图像识别互相补充去识别这个叉叉,兼容性取决于图像识别的能力,难度较高
方案 3:相对识别,先找到上面的大控件,再往下找这个叉叉
提供一个思路:如果点不到要测试的元素(弹窗处在最前面),尝试查看有没有弹窗,如果有就关掉继续做你的测试
用的是 uiautomatorviewer,可以准确识别,主要是这个叉叉每次定位都不一样,得写比较多的 try...except 做异常判断,然后这个弹窗什么时候出现,时间也不一定,但是都是在主页,目前是做了三次异常判断
目前就是这样处理的。先 try 要点击的元素,再去调用点击弹窗的操作,循环三次,如果中间要点击的元素执行了,再跳出循环。但是有个问题,如果开发配置这个弹窗弹五次或者六次呢,比较麻烦了,又得改循环次数。而且每个弹窗叉叉的元素定位不同,得有比较多的 try...except
最佳的方式当然是改造 appium 啦,就跟监控权限框一样,参考我 testerhome 专栏,但这个方案应该不适合你,比较复杂。我推荐是写在脚本中,开一个线程去做这件事。
1 我的思路是:开发模式中有个观察者模式,如果发现不到理想的空间就上报给监控 watcher, 然后每个 case 注册响应的监控处理就可以了
这个思想办法有点像 uiautomator 的 watcher 组件
应用上的代码就可以完善,框架设计模式优化下,不需要考虑底层的代码
2 笨一点的:多线程,一直轮询
上面的 try 不适合,那抛异常的话就不能继续执行下面的代码了
3 再笨一点就是写个方法,脚本里多次调用看是不是弹出这个
嗯,其实想做监控来着,奈何代码能力比较差,不知如何下手。线程可以试试,但是多线程,是启动一个 appium 吗,如果一直轮询的话,会对我的 UI 自动化的下一步操作造成影响吗
我觉得监控肯定有坑吧,比如多个进程下每个进程要启动很多线程要要看资源分配,虽然表面上没问题但是并发起来遇见 adb 等卡死,还在在线程中做修饰器处理
要是观察觉得好点,其实你看看设计模式就知道了
case 继承,注册的就搞定了
可以在每个脚本执行前加个判断的,这应该不难吧,有一种设计模式叫代理模式,可以试试