获取更多技术文章分享和免费资料领取点击链接:`qrcode.testing-studio.com/f?from=juej… 获取更多技术文章分享和免费资料领取点击链接
App 自动化测试中有些常见痛点问题,如果框架不能很好的处理,就可能出现元素定位超时找不到的情况,自动化也就被打断终止了。很容易打消做自动化的热情,导致从入门到放弃。比如下面的两个问题:
一是 App 启动加载时间较久(可能 App 本身加载慢,可能移动设备本身加载应用速度慢,也可能首页广告时间较长)。
另一个是各种弹框的出现,广告弹框,升级弹框,评价弹框等。在框架中如果不能处理好上面的情况,
以雪球 App 出现的几种弹框举例:
弹框一:
弹框二:
弹框三:
-
弹框的影响范围
-
弹框对我们自动化的影响主要是用例执行的打断,而至于弹框中广告内容的跳转或评价信息填写等属于另外的测试,因此我们主要是要将弹框处理消失,使应用回到用例执行的 PO;
-
弹框的消失方式
-
观察弹框,我们会发现一般为了保证用户体验,弹框都会方便用户进行一键消除,例如上述中雪球的各种弹框,可能点击一个叉号,可能任意点击其他地方,或者评价框这种直接点击“下次再说”等。
-
弹框的处理效果
-
自动化执行的任何时候,任意的弹框都可能出现,在这个时候用例不能失败,需要将对应的弹框正确处理后继续执行原用例,原用例的执行过程不受影响。
- 将需要处理的弹框元素加入到一个黑名单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… 获取更多技术文章分享和免费资料领取点击链接
