SELENIUM的三種等待時間
為了提高指令碼的穩定性,我們需要在指令碼中增加等待時間
第一種:強制等待
Thread.sleep():固定休眠時間設定,Java的Thread類裡提供了休眠方法sleep,匯入包後就能使用
sleep()方法以毫秒為單位
Thread.sleep(3000);
----執行到此時不管什麼就固定的等待三秒之後再接著執行後面的操作
第二種:隱式等待方法
implicitlyWait()方法比sleep()方法智慧,sleep()方法只能在一個固定的時間等待,而implicitlyWait()可以在一個時間範圍內等待,稱為隱式等待
隱式等待採用全部設定,也就是說,你所有的findElement方法都會隱式等待10s
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
----此方法針對執行指令碼的所有物件,等待10秒
第三種:顯示等待方法
WebDriverWait()
就是明確的要等到某個元素的出現或者是某個元素的可點選等條件,等不到,就一直等,除非在規定的時間之內都沒找到,那麼就跳出Exception
1、每500毫秒掃描介面是否出現元素
2、針對單一元素
3、可以設定超時時間
WebDriverWait wait=new WebDriverWait(driver, 10);
WebElement wl = wait.until(new ExpectedCondition<WebElement>() {
@Override
public WebElement apply(WebDriver d) {
return d.findElement(By.cssSelector(".red_box"));
}
});
----在規定時間內等待 在10秒的範圍內 出現.red_box元素就往下執行,如果10秒過後還沒出現就跳出