+ 首页>>技能>>内容

技能Selenium专题—弹出框处理155次围观

web自动化测试的时候,网页为了有更好的用户体验,总是存在各种各样的弹出框,遇到这些弹出框怎么办呢?


页面中遇到的弹出框,我一般把它分为两种方式处理:
1、alert弹出框
2、非alert弹框
给出的代码中基本能处理所有页面的各种弹框。

1、alert弹框

这种弹出框处理应该毫无难度,网上也有很多介绍的,这边提供一个方法,见代码
程序清单

//处理潜在的1个alert(javascript弹出框)
public boolean dealPotentialAlert(WebDriver driver,boolean option) {
//是否存在
boolean flag = false;
//异常捕获
try {
    Alert alert = driver.switchTo().alert();
    //判断是否存在alert弹框
    if (null == alert){
        throw new NoAlertPresentException();
    }
    //异常捕获
    try {
        //确认or取消
        if (option) {
            //确认
            alert.accept();
            System.out.println("Accept the alert: " + alert.getText());
        } else {
            //取消
            alert.dismiss();
            System.out.println("Dismiss the alert: " + alert.getText());
        }
        flag = true;
    } catch (WebDriverException e) {
        if (e.getMessage().startsWith("Could not find")){
            System.out.println("There is no alert appear!");
        }else{
            throw e;
        }
    }
} catch (NoAlertPresentException e) {
    System.out.println("There is no alert appear!");
}
return flag;
}

2、非alert弹框

不管是JS自定义的弹出框还是windows弹出框,下面给出的方法都能准确定位

//处理多个非alert弹窗
public static boolean testNewWindows(WebDriver driver){
//当前窗口句柄
String currentHandle = driver.getWindowHandle();
//得到所有窗口的句柄
Set handles = driver.getWindowHandles();
//不包括当前窗口
handles.remove(currentHandle);
//存在窗口
if (handles.size() > 0) {
    try{
    //定位窗口
        dr.switchTo().window(handles.iterator().next());
        return true;
    }catch(Exception e){
        System.out.println(e.getMessage());
        return false;
    }
}
System.out.println("Did not find window");
return false;
}

//处理单个非alert弹窗
public static boolean testNewWindow(WebDriver driver){
    try{
        //定位窗口
        driver.switchTo().window(driver.getWindowHandles().iterator().next());
        return true;
    }catch(Exception e){
        System.out.println(e.getMessage());
        return false;
    }
}

+ 猜你喜欢...

===== 关于 DiggerPlus =====
DiggerPlus是国内新锐测试人垂直内容博客,专注于挖掘测试工具,普及测试技术,专注于测试人能力提升,博客上线后就受到广大测试人的热烈追捧;此外,DiggerPlus深度整合评测资源,揭秘科技数据和真相,让读者更懂科技,更好地把玩科技。 我们始终保持"独立,客观,严谨,优秀"的优良作风,努力为读者带来源源不断的优质内容。想访问更多酷毙的测试人网站?赶紧来DiggerPlus测试人网址导航看看吧!

===== DiggerPlus Team =====
DiggerPlus Team是DiggerPlus官方发起的团队,这是一群热爱科技,热爱测试,喜欢深度挖掘的热血测试人,他们是评测师,测试专家。 我们欢迎优秀的测试人加入DiggerPlus Team。 加入DiggerPlus,可以成为我们的认证Dper,认证Dper拥有DiggerPlus独一无二的专栏并得到个人展示。

===== DiggerPlus 官方读者群 =====
DiggerPlus官方读者群(一)

+ 关于本文作者

我也很想让世界变得更美好,可是上帝却不开放源代码。

的专栏 | 专栏作者 | 访问Kiven的主页

+ 已有2个评论

Copyright © 2014 DiggerPlus. 91 queries in 0.638 seconds.
使用合作网站账号快速登录,更多精彩等着您: 开源中国