处理Selenium中的警报

时间:2014-07-21 09:29:20

标签: java selenium selenium-webdriver

我有一个方案,点击"保存"按钮可以根据输入的数据提供三种不同的警报。它可以成功保存","用户已注册"和"用户名已存在"警报。我试过了:

driver.findElement(By.id("dnn_ctr5995_View_btnsavesession")).click();
    Thread.sleep(10000);
Alert alert = driver.switchTo().alert();
    String A = alert.getText();
    if (A == "Username already exist"){
        System.out.println("Admission number already exist.");
        alert.accept();
    } else if (A == "User already registered"){
        System.out.println("User already registered");
        alert.accept();
    } else if (A == "Saved Successfully."){
        System.out.println("Saved Successfully.");
        alert.accept();
    }

但它显示无警报存在异常。我已经尝试过增加睡眠时间但仍显示相同的异常。

3 个答案:

答案 0 :(得分:0)

看起来您的点击实际上没有点击,因为“保存' id在元素中没有。 试着这样做:

    driver.findElement(By.cssSelector("[id*=save"])).click();

然后试图抓住警报。请注意' *'在选择器。

答案 1 :(得分:0)

根据Html共享,元素的id不是" save"。所以共享代码的第一行应该稍微修改一下以实现输出。

将元素标识标记更改为:

driver.findElement(By.id("dnn_ctr5995_View_btnsavesession")).click();

或者如果' id'元素在每个实例上都在变化,然后可以更改为:

driver.findElement(By.xpath("//*[contains(@id,'_View_btnsavesession')]")).click();

答案 2 :(得分:0)

我猜你实际上从未打电话给alert.accept(),因为你使用的是A == "User already registered"而不是"User already registered".equalsIgnoreCase(A)。如果您更改了if条件,则可以解决您的问题。