Android自动化测试处理各种弹窗的操作方法
在ui自动化测试中弹窗是影响自动化用例稳定性的一大因素,如何方便快捷的处理各种情况下的弹窗,是搞ui自动化测试必须要面临的问题.
弹窗的种类:
安装app时的系统弹窗 此类弹窗一般有两种,一种是自动化测试框初始化本身也需要安装一些app,比如uiautomator2会安装atx-agent、com.github.uiautomator,这些弹窗在初始化环境的时候可以手动点掉,case里不需要关注。另一种就是安装我们的被测app,像下面这种
都是我们不得不去处理的,不然,自动化也就是不自动了。 app启动时的权限弹窗
这类弹窗是app在启动时会申请一些基础的权限
app内的业务弹窗
弹窗处理
本文使用的是uiautomator2这个自动化框架,它提供了一种watcher对象,可以用来配置要监控的元素,这里我们配置要监控的就是页面上的弹窗,下面来看看具体怎么做。
watcher的使用
上面是watcher的一些常用api以及解释,来源于github。嘻嘻,自己懒的写了。
实战案例
下面我们用b站apk为例,处理从安装到登录后的一系列弹窗。
弹窗处理的核心思想是,起一个线程,不停的监听页面上有没有弹窗出现,出现了就点击,或点击取消或点击确认等等。
uiautomator2处理弹窗的核心思想
采用了后台运行了一个线程的方法(依赖threading库),然后每隔一段时间dump一次hierarchy,匹配到元素之后执行相应的操作。
watcher对象个self._watchers 属性来维护所有要监控的元素,d.watcher.when('继续安装')当我们调用when方法后会返回一个xpathwatcher对象,然后再调用这个对象的click方法实现对监控元素的操作。
click方法就是将点击的操作放到回调函数,然后调用xpathwatcher对象的call方法,这个方法会生成一个监控规则,并将监控规则放到我们前面提到的watcher对象的self._watchers 属性。
再然后调用watcher对象的的start方法,开启一个线程,按照指定间隔时间从页面dump信息,查看是否有要监控的元素,找到后调用回调函数。
以上是我们关于弹窗处理的一些操作,但是有没有发现,上面实战哪里写的是有问题,难道每一次有新的弹窗都要在这里写一行代码么,还有是不是能适配不同机型呢?
到此这篇关于android自动化测试中如何处理各种弹窗的文章就介绍到这了,更多相关android自动化测试弹窗内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!