我們在進行selenium頁面自動化的測試的時候,由於需要等待目標頁面的加載或由於網絡或硬件配置導致的頁面加載等待,經常會用到sleep,但是由於在不同場景下對於sleep時間的估計無法十分准確,導致一些非必要的異常,或非必要的等待,sleep是線程休眠,而implicitly_wait()不是休眠,而是設置超時時間,它的作用的全局的,也就是在一個腳本中只需要使用一次(作用范圍是針對整個webdriver對象實例),在每次進行find_element時起作用,以IEDriverServer為例,implicitlyWait()會將一個超時的時間閥值傳遞給IEDriverServer,在findelement或者findelements的時候,首先去找web元素,如果沒有找到,判斷時間否超超過implicitlyWait()傳遞進來的閥值,如果沒有超過,則再次找這個元素,直到找到元素或者時間超過最大閥值。理論上我們可以設置一個較大的值,但這並不會讓程序傻傻等待。當然在本次並未找到相應的元素時,IEDriverServer也是會休眠的,默認是250ms,休眠時間到后,進行下一次的元素定位,在超時時間之內定位成功則執行后面的代碼,如果在超時時間之內沒有定位到代碼,在會報定位不到相應元素的報錯
舉例:
driver.implicitly_wait(10) #超時時間為10s