1、sleep()方法
Thread.sleep(60000)強制等待60s
這個方法是最不推薦的,是用線程等待的方式來實現,每次元素出現在頁面的時間不一樣,如果設置的時間長了,白白浪費了時間,如果設置的時間短了,腳本依然會報沒有找到元素的錯誤。
2、WebDriver PageLoadTimeOut()方法
driver.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS);
這個方法實際上跟上面那個是一樣的,也不推薦
3、隱式等待implicitlyWait()
原理:隱式等待,就是在創建driver時,為瀏覽器對象設置一個等待時間。這個方法是得不到某個元素就等待一段時間,直到拿到某個元素位置。
注:此處設置的等待時間 是針對全局設置的,webdriver中執行所有命令的超時時間都設置為second秒了
private boolean isElementPresent(By by) {
try {
driver.manage().timeouts().implicitlyWait(1, TimeUnit.SECONDS);
driver.findElement(by);
return true;
} catch (NoSuchElementException e) {
return false;
}
}
4、顯示等待WebDriverWait()
WebDriverWait wait = new WebDriverWait(driver, timeOut); // timeOut為等待時間,單位秒
wait.until(new ExpectedCondition<Boolean>() {
public Boolean apply(WebDriver d) {
boolean loadcomplete = d.findElement(locator).isDisplayed();
return loadcomplete;
}
});
}