如何解决Selenium:在驱动程序关闭之前警报无法执行
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);
,但没有用。
如何等待警报确认完成?
解决方法
您可以等待实际的 WebElement 显示/等等...在网页上。
如果您没有特定元素,则可以使用几毫秒的 Thread.sleep
。
可能不是理想的解决方案,但只要您只需要等待,别无其他,它应该可以解决问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。