app UI自动化弹窗监听机制
最近做app UI自动化时软件中有很多的弹窗出现,影响下一步操作,导致用例执行失败主要也是因为公司软件有很多不定时的弹窗出现,所以需要在弹窗出现后将其X掉,进行下一步操作处理方法:getPageSource方法可以在当前页面可以得到一个文本字符串,也可以理解为当前页面的xml,利用这种xml文本来进行判断,比用appium一一定位的方式要快速和精准的多public static void hand
·
最近做app UI自动化时软件中有很多的弹窗出现,影响下一步操作,导致用例执行失败
主要也是因为公司软件有很多不定时的弹窗出现,所以需要在弹窗出现后将其X掉,进行下一步操作
处理方法:
- getPageSource方法可以在当前页面可以得到一个文本字符串,也可以理解为当前页面的xml,利用这种xml文本来进行判断,比用appium一一定位的方式要快速和精准的多
public static void handleHashAlert() {
String pageSource = Driver.getInstance().getPageSource();
String iv_close1 = "iv_close";
HashMap<String, By> map = new HashMap<>();
map.put(iv_close1, By.id(iv_close));
map.put(cancel1, By.id(cancel));
map.put(closebtn1, By.id(closebtn));
map.put(dialogClose1, By.id(dialogclose));
map.put(imageclose1, By.id(imageclose));
map.put(naviright1, By.id(naviright));
map.put(skip1, By.id(skip));
map.put(refuselove1, By.id(refuselove));
map.put(nowheat1, By.id(nowheat));
map.put(downsure1, By.id(downsure));
map.put(groupclose1, By.id(groupclose));
# 遍历map,判断当前页面是否有弹窗
map.entrySet().forEach(entry -> {
if (pageSource.contains(entry.getKey())) {
// 存在弹窗 直接点击消除
Driver.getInstance().findElement(entry.getValue()).click();
}
});
}
定位元素时调用 handleHashAlert
方法
public static AndroidElement findLocatorId(String id) {
try {
Driver.waitForElementVisible(Driver.getInstance(), By.id(id), 3);
return Driver.getInstance().findElement(By.id(id));
} catch (Exception e) {
handleHashAlert();
log.info("弹窗处理");
Driver.waitForElementVisible(Driver.getInstance(), By.id(id), 3);
return Driver.getInstance().findElement(By.id(id));
}
}
更多推荐
已为社区贡献3条内容
所有评论(0)