## 等待
### 明確等待
假設被測頁面實現了這樣的一種效果:點擊click按鈕4秒鐘后,頁面上會出現一個藍色的div塊。需要寫一段自動化腳本去捕獲這個出現的div,然后高亮它。
```
WebDriverWait wait = new WebDriverWait(dr, 10);
wait.until(new ExpectedCondition<WebElement>()
{
public WebElement apply(WebDriver d)
{
return d.findElement(By.cssSelector(".blue_box"));
}
}
```
代碼WebDriverWait類的構造方法接受了一個WebDriver對象和一個等待最長時間(10秒)。然后調用until方法,其中重寫了ExpectedCondition接口中的apply方法,讓其返回一個WebElement,即加載完成的元素。默認情況下,WebDriverWait每500毫秒調用一次ExpectedCondition,直到有成功的返回,當然如果超過設定的值還沒有成功的返回,將拋出異常。
### 隱性等待
隱性等待是指當要查找元素,而這個元素沒有馬上出現時,告訴WebDriver查詢Dom一定時間。默認值是0,但是設置之后,這個時間將在WebDriver對象實例整個生命周期都起作用。
上面的代碼可改為如下代碼:
```
// 設置10秒
dr.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
```