是否可以一步处理多个弹出窗口?

时间:2017-10-24 08:39:35

标签: javascript selenium selenium-webdriver

This page有一个按钮提示框:点击此处。如果我们点击此按钮,它会显示一个弹出窗口,当我们点击确定按钮时,它会显示另一个弹出窗口。

我的代码是:

driver.findElement(By.xpath("//*[@id='contact-form-2599']/form/button")).click();
driver.switchTo().alert().accept();
driver.switchTo().alert().accept();

我使用相同的代码两次点击弹出窗口。

是否可以一步处理多个弹出窗口?

2 个答案:

答案 0 :(得分:2)

您可以遍历driver可以关注的所有可能的命名提醒:

function closeAlerts() {
    // this aussmes that there is at least one alert
    try {
        let currentAlert = driver.switchTo().alert();
    }
    catch (err) {
        console.log(err);
        return;
    }

    // loop through the alerts and accept them
    while (currentAlert && currentAlert.accept instanceof Function) {
        currentAlert.accept();
        try {
            currentAlert = driver.switchTo().alert();
        }
        catch (err) {
            console.log(err);
            return;
        }
    }
}
closeAlerts();

我希望这会有所帮助。

答案 1 :(得分:-1)

这也可以用于for循环,

//设置为2个警报

    for (int i=1; i<3; i++)
    {
    driver.switchTo().alert().accept();//Here it runs twice so two pop-ups can be accepted.
    }

请检查一下它是否适用于我的代码。