我想点击一个按钮,直到出现javascript警告。
以下是我想做的事情:
while(!ExpectedConditions.alertIsPresent())
button.click();
但是这不起作用,因为表达式没有被计算为布尔条件。
我试过了:
while(ExpectedConditions.alertIsPresent() == null)
button.click();
但这导致永远不会进入循环。感谢您提供任何指导
答案 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();