在自動化過程中,元素出現受網絡環境,設備性能等多種因素影響。因此元素加載的時間可能不一致,從而會導致元素無法定位超時報錯,但是實際上元素是正常加載了的,只是出現時間晚一點而已。那麼如何解決這個問題呢?
元素等待作用
設置元素等待可以更加靈活的制定等待定位元素的時間,從而增強腳本的健壯性,提高執行效率。
元素等待類型
強制等待
設置固定的等待時間,使用sleep()方法即可實現
from time import sleep
#強制等待5秒
sleep(5)
隱式等待
隱式等待是針對全部元素設置的等待時間
driver.implicitly_wait(20)
顯式等待
顯式等待是針對某個元素來設置的等待時間。
方法WebDriverWait格式參數如下:
from selenium.webdriver.support.ui import WebDriverWait
WebDriverWait(driver, timeout, poll_frequency=0.5, ignored_exceptions=None)
driver : WebDriver
timeout : 最長超時時間,默認以秒爲單位
poll_frequency : 休眠時間的間隔時間,默認爲0.5秒
ignored_exceptions : 超時後的異常信息,默認情況下拋NoSuchElementException異常。
WebDriverWait()一般和until()或until_not()方法配合使用,另外,lambda提供了一個運行時動態創建函數的方法。
from selenium.webdriver.support.ui import WebDriverWait
WebDriverWait(driver,10).until(lambda x:x.find_element_by_id("elementID"))