zoukankan      html  css  js  c++  java
  • 弹出框处理

    页面中遇到的弹出框,我一般把它分为两种方式处理:
    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<String> 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;
        }
    } 
    View Code


    注:以上内容转自http://www.diggerplus.org/archives/920

  • 相关阅读:
    mobx源码解读1
    表单元素之图形系
    koa2+koa-views示例
    avalon2的后端渲染实践
    向一个数组中插入元素
    一步步编写avalon组件02:分页组件
    avalon2学习教程15指令总结
    avalon2学习教程14动画使用
    WPF动态加载Menu菜单
    WPF自定义控件与样式 ---- 系列文章
  • 原文地址:https://www.cnblogs.com/dingziyin/p/5044177.html
Copyright © 2011-2022 走看看