单击按钮,直到Selenium中出现警报

时间:2016-04-13 17:47:05

标签: java selenium

我想点击一个按钮,直到出现javascript警告。

以下是我想做的事情:

while(!ExpectedConditions.alertIsPresent())
  button.click();

但是这不起作用,因为表达式没有被计算为布尔条件。

我试过了:

while(ExpectedConditions.alertIsPresent() == null)
  button.click();

但这导致永远不会进入循环。感谢您提供任何指导

2 个答案:

答案 0 :(得分:0)

您可以使用此解决方法: -

var dataset = ["word", "a word", "another word"],
    search = "word",
    count = dataset.reduce(function(r, a) {
        return r + !!~a.indexOf(search);
    }, 0);

document.write(count);

答案 1 :(得分:0)

无法在ExpectedConditions.alertIsPresent中直接评估谓词while。 你可以和服务员一起使用:

WebDriverWait wait = new WebDriverWait(driver, 20);
wait.until(ExpectedConditions.alertIsPresent());

但在你的情况下,更好的选择是实现一个谓词,点击按钮直到警报出现:

WebElement button = driver.findElement(By.id("..."));

// clicks on the button every 100ms until the alert is present
Alert alert = new WebDriverWait(driver, 20, 100).until((WebDriver drv)->{
    try{
        button.click();
        return drv.switchTo().alert();
    }catch(NoAlertPresentException ex){
        return null;
    }
});

// accept the alert
alert.accept();