在寫自動化腳本時,有時候操作過快會導致定位不到元素,這時就需要加上等待時間啦,下面就介紹等待時間的三種情況:
selenium有三種等待形式:
- 強制等待(比較常用)
Thread.sleep(1000);
- 顯式等待
需要增加一定等待時間,顯式等待時間可以通過WebDriverWait和Util來決定。比如這個timeout是60,如果該元素60s以內出現就不再等待。
顯示等待是針對於某個特定的元素設置的等待時間,如果在規定的時間範圍內,沒有找到元素,則會拋出異常,如果在規定的時間內找到了元素,則直接執行,即找到元素就執行相關操作。
WebDriverWait wait = new WebDriverWait(driver,60,1)
// 每隔1秒去調用一下until中的函數,默認是0.5秒,如果等待60秒還沒有找到元素 。則拋出異常。
wait.until(new Expectedcondition(){
public WebElement apply(WebDriver driver) {
driver.findElement(By.id(“kw”));
return driver.findElement(By.id(“kw”)); }
)}
- 隱式等待
是設置的全局等待,分爲1、頁面加載超時等待 ;2、頁面元素加載超時;3、異步腳本超時。
如果是頁面元素超時,設置等待時間,是對頁面中的所有元素設置加載時間。
//頁面加載超時時間設置爲5s
driver.manage().timeouts().pageLoadTimeout(5,TimeUnit.SECONDS);
driver.get(“https://www.baidu.com/”);
//定位對象時給10s的時間, 如果10s內還定位不到則拋出異常
driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);
driver.findElement(By.id(“kw”)).sendKeys(“隱式等待”);
//異步腳本的超時時間設置成3s
driver.manage().timeouts().setScriptTimeout(3,TimeUnit.SECONDS);