我有一个自动化场景来执行内容搜索。问题发生在搜索结果屏幕中,几乎同时出现2个Javascript警报弹出窗口。我说几乎是因为弹出窗口一个接一个地出现,而不是一下子全部出现。我设法处理了第一个,但没有处理第二个。第二个警报处理程序代码发生NoAlertPresentException。
警报发生的地方:
public WSSPage enterAndSearchContent(String title) {
waitWSSPageLoaded();
waitForElementTextWithEnter(searchTextField, title);
waitWSSPageLoaded();
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.alertIsPresent());
Alert alert = driver.switchTo().alert();
alert.dismiss();
wait.until(ExpectedConditions.alertIsPresent()); //NoAlertPresentException happened here
Alert alert2 = driver.switchTo().alert();
alert2.dismiss();
return PageFactory.initElements(driver, WSSPage.class);
}
我尝试过使用alert.dismiss();
两次但仍然在第二个alert.dismiss();
给出NoAlertPresentException,如下面的代码:
public WSSPage enterAndSearchContent(String title) {
waitWSSPageLoaded();
waitForElementTextWithEnter(searchTextField, title);
waitWSSPageLoaded();
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.alertIsPresent());
Alert alert = driver.switchTo().alert();
alert.dismiss();
alert.dismiss(); //NoAlertPresentException happened here
return PageFactory.initElements(driver, WSSPage.class);
}
当我尝试手动解除警报时,第二个警报几乎立即出现。我想问题是代码无法捕获第二个警报,因为它太快了? 这个问题有解决方法吗?谢谢。
注意: 我使用的是Firefox