ouniao

首页 新随笔 联系 订阅 管理

 

http://hi.baidu.com/janice515/item/bce536bb136e8441bb0e120f

摘上面:

 

一般正常情况下会报错,如 no alert is  active  目前未找到alert

如果没有出现alert

1、页面未加载完成,alert没加载出来

2、页面加载完,但获取不到alert

针对第一种情况:

解决的办法可能是:

a、加上页面加载时间

针对第二种情况:

解决的办法可能是:

a、代码写的是否正确

b、iframe是否已跳出

建议大家写一个公共方法,来进行判断alert是否存在;

目前webdriver已经可以不用js的方式来调取,可以使用本身封装好的方法;

如下所示

 

 public static Alert waitForAlert(WebDriver driver, int seconds)
    {
        Wait<<b style="color: black; background-color: rgb(255, 102, 255);">WebDriver> wait = new WebDriverWait(driver, seconds);
        return wait.until(new AlertAvailable());
    }

    private static class AlertAvailable implements ExpectedCondition<<b style="color: black; background-color: rgb(160, 255, 255);">Alert>
    {
        private Alert alert = null;
        @Override
        public Alert apply(WebDriver driver) {
            Alert result = null;
            if (null == alert)
            {
                alert = driver.switchTo().alert();
            }
            try {
                alert.getText();
                result = alert;
            } catch (NullPointerException npe)
            {
                logger.error(npe);
             }
               return result;
        } }

commonJava.waitForAlert(driver,10).accept(); 调用这个方法就可以了

当然我的问题也就解决了~

posted on 2014-03-07 10:50  ouniao  阅读(1274)  评论(0编辑  收藏  举报