首页 > 解决方案 > 由于预期条件失败而面临错误:等待警报出现(尝试 5 秒,间隔 500 毫秒)

问题描述

当条件下降时,它进入 else,但当它为 true 时,不进入 if

try {
    //WebDriverWait wait = new WebDriverWait(driver, 5);

    if(wait.until(ExpectedConditions.alertIsPresent()) == null) {
        System.out.println("alert was not present")
        (wait.until(ExpectedConditions.elementToBeClickable(By.xpath("/html/body/div[2]/div/div/div[2]/button[2]"))).click();
        Confirmation.click();
    }
    else {
        String Recipemessage = driver.switchTo().alert().getText();
        System.out.println(Recipemessage);

        if(Recipemessage.equals(alertmessage2) || Recipemessage.equals(alertmessage4) ) {

            Thread.sleep(3000);

            driver.switchTo().alert().accept();
            break;
        }
    }
} catch(Exception exp7) {
    System.out.println(exp7);
}

标签: javaseleniumselenium-webdriverui-automation

解决方案


ExpectedConditions.alertIsPresent()永远不会返回null,它将返回警报或抛出TimeoutException

Alert alert = null;
try {
    alert = wait.until(ExpectedConditions.alertIsPresent());
catch(Exception) { }

if(alert == null) {
    System.out.println("alert was not present")
    wait.until(ExpectedConditions.elementToBeClickable(By.xpath("/html/body/div[2]/div/div/div[2]/button[2]"))).click();
    Confirmation.click();
}
else {
    String Recipemessage = alert.getText();
    System.out.println(Recipemessage);

    if (Recipemessage.equals(alertmessage2) || Recipemessage.equals(alertmessage4)) {
        Thread.sleep(3000);
        alert.accept();
        break;
    }
}

推荐阅读