干货 | 解决 App 自动化测试的常见痛点(弹框及首页启动加载完成判断处理)

183 阅读2分钟

获取更多技术文章分享和免费资料领取点击链接:`qrcode.testing-studio.com/f?from=juej… 获取更多技术文章分享和免费资料领取点击链接

App 自动化测试中有些常见痛点问题,如果框架不能很好的处理,就可能出现元素定位超时找不到的情况,自动化也就被打断终止了。很容易打消做自动化的热情,导致从入门到放弃。比如下面的两个问题:

一是 App 启动加载时间较久(可能 App 本身加载慢,可能移动设备本身加载应用速度慢,也可能首页广告时间较长)。

另一个是各种弹框的出现,广告弹框,升级弹框,评价弹框等。在框架中如果不能处理好上面的情况,

以雪球 App 出现的几种弹框举例:

弹框一:

弹框二:

弹框三:

  • 弹框的影响范围

  • 弹框对我们自动化的影响主要是用例执行的打断,而至于弹框中广告内容的跳转或评价信息填写等属于另外的测试,因此我们主要是要将弹框处理消失,使应用回到用例执行的 PO;

  • 弹框的消失方式

  • 观察弹框,我们会发现一般为了保证用户体验,弹框都会方便用户进行一键消除,例如上述中雪球的各种弹框,可能点击一个叉号,可能任意点击其他地方,或者评价框这种直接点击“下次再说”等。

  • 弹框的处理效果

  • 自动化执行的任何时候,任意的弹框都可能出现,在这个时候用例不能失败,需要将对应的弹框正确处理后继续执行原用例,原用例的执行过程不受影响。

  1. 将需要处理的弹框元素加入到一个黑名单List中,遍历List,通过findElements方法得到的List大小来判断弹框元素是否存在,存在即点击处理
public static void handleAlert(){
        List<By> alertBox = new ArrayList<>();
                alertBox.add(By.id("ib_close"));   //广告弹框
                        alertBox.add(By.id("md_buttonDefaultNegative")); //评价弹框
                        
                                alertBox.forEach(alert->{
                                            By adsLocator = alert;
                                                        List<WebElement> ads = driver.findElements(adsLocator);
                                                                    if (ads.size() >= 1) {
                                                                                    ads.get(0).click();
                                                                                                }
       

递归处理: 一般情况下我们一次只会出现一个弹框,但是例外的是可能有一个以上的弹框同时出现,这样的话虽然处理了其中一个弹框,但是剩下的弹框依然会阻断用例的正常执行,这个时候就可以使用递归的方法,在处理完弹框后返回findElement方法自身,继续进行try catch,使之进入弹框处理逻辑 原文链接 > 获取更多技术文章分享和免费资料领取点击链接:`qrcode.testing-studio.com/f?from=juej… 获取更多技术文章分享和免费资料领取点击链接