【发布时间】:2021-04-08 04:07:27
【问题描述】:
我有这样的代码:
public class classTest {
WebDriver webDriver;
WebDriverWait wait;
ExpectedCondition<Boolean> pageLoadCondition = new
ExpectedCondition<Boolean>() {
public Boolean apply(WebDriver driver) {
return ((JavascriptExecutor) driver)
.executeScript("return document.readyState")
.equals("complete");
}
};
@BeforeEach
public void init() {
webDriver = new FirefoxDriver();
wait = new WebDriverWait(webDriver, 10);
}
@AfterEach
public void quit() {
webDriver.quit();
}
@Test
public void Test1() {
...
}
@Nested
class classTest2 {
@BeforeEach
public void create() {
...
}
@AfterEach
public void closeAlert() {
webDriver.get("https://...");
...
Alert alert = wait.until(ExpectedConditions.alertIsPresent());
webDriver.switchTo().alert().accept();
}
@Test
public void Test2() {
...
}
...
当Test2()完成时,closeAlert()方法被执行。
页面上会显示一条警报,但 accept() 会在 50% 的情况下触发。我的猜测是它没有时间触发,因为quit()方法立即执行,关闭了浏览器。
我在警告后尝试过wait.until(pageLoadCondition);,但这没有帮助。
如何等待警报确认完成?
【问题讨论】:
标签: selenium selenium-webdriver junit webdriver browser-automation