1.Thread.sleep(Seconds);
2.顯示等待:
顯式等待,就是明確的要等到某個元素的出現(xiàn)或者是某個元素的可點(diǎn)擊等條件,等不到,就一直等,除非在規(guī)定的時(shí)間之內(nèi)都沒找到,那么就跳出Exception.
如:
newWebDriverWait(driver,15).until(
ExpectedConditions.presenceOfElementLocated(By.cssSelector("css locator"))
3.隱式等待
driver.manage().timeouts().implicitlyWait(second, TimeUnit.SECONDS);
隱式等待, 此處的隱式等待是針對Driver 每次執(zhí)行命令的 最長執(zhí)行時(shí)間也可以理解為超時(shí)時(shí)間狈蚤,? 一些人對此處有誤解,認(rèn)為是讓Driver等一段時(shí)間资溃,? 確實(shí)某些時(shí)候能讓Driver等一段時(shí)間桑李, 但是影響是全局的塞关,每次Driver執(zhí)行 找不到元素都會等待此處設(shè)置的時(shí)間蜒犯,? 假設(shè)某處將此值設(shè)置的太長抽活,必須在執(zhí)行完成之后還原回來硫戈,否則判斷一個元素是否存在的時(shí)候,就會遇到很坑爹的問題酌壕。?? 改進(jìn)后的方法如下:
WebDriver會進(jìn)行一個隱式等待,但參數(shù)只有時(shí)間,這就導(dǎo)致我需要什么元素出現(xiàn),我不一定能等到它,
private boolean isElementPresent(By by) {
try {
driver.manage().timeouts().implicitlyWait(1, TimeUnit.SECONDS);
driver.findElement(by);
return true;
} catch (NoSuchElementException e) {
return false;
}
}
得不到某個元素,我們就延遲一下.