WebDriverWait 是 Selenium 中用于显式等待(Explicit Wait)的类,用来等待某个条件满足后再继续执行,而不是固定 Thread.sleep()。

  1. 等待元素出现(最常用)
1
2
3
4
5
6
7
WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));

WebElement element = wait.until(
ExpectedConditions.visibilityOfElementLocated(By.id("username"))
);

element.sendKeys("admin");
  1. 等待元素可以点击
1
2
3
4
5
WebElement button = wait.until(
ExpectedConditions.elementToBeClickable(By.id("loginBtn"))
);

button.click();
  1. 等待元素存在于DOM
1
2
3
WebElement element = wait.until(
ExpectedConditions.presenceOfElementLocated(By.cssSelector(".item"))
);
  1. 等待文本出现
1
2
3
4
5
6
wait.until(
ExpectedConditions.textToBePresentInElementLocated(
By.id("status"),
"完成"
)
);
  1. 等待URL变化
1
2
3
wait.until(
ExpectedConditions.urlContains("dashboard")
);
  1. 等待页面标题
1
2
3
wait.until(
ExpectedConditions.titleContains("首页")
);
  1. 等待弹窗(Alert)
1
2
3
4
5
Alert alert = wait.until(
ExpectedConditions.alertIsPresent()
);

alert.accept();
  1. 自定义等待条件
1
2
3
4
5
wait.until(driver ->
((JavascriptExecutor) driver)
.executeScript("return document.readyState")
.equals("complete")
);