各位程式員你好,我有一個簡單的問題。
是
wait = WebDriverWait(browser, 10)
相當于
time.sleep(10)
?
我正在開發這個 selenium 應用程式,有時服務器流量非常大,這導致在頁面之間移動時加載時間不同。我發現time.sleep(N)效率不高,但是如果我使用該wait.until EC塊,一旦滿足條件,代碼會執行嗎?
使用不會浪費時間wait = WebDriverWait(browser, 60),頁面加載3秒?
uj5u.com熱心網友回復:
的硬編碼暫停time.sleep(10)和顯式等待wait = WebDriverWait(browser, 10)肯定是不一樣的。
硬編碼的 pausetime.sleep(10)將無條件地暫停代碼的執行 10 秒。
顯式等待wait = WebDriverWait(browser, 10)將輪詢網頁,直到滿足指定條件。一旦滿足條件,您的代碼將立即繼續執行。
例如,如果您定義了顯式等待,直到找到的元素div.selected可見,Selenium 將每隔某個預定義時間輪詢 DOM,比如說每 100 毫秒,當它發現此類元素可見時,wait將完成并且您的代碼將繼續執行。
如果在定義的超時時間內未滿足條件,在上面的示例中為 10 秒,Selenium 將拋出TimeoutException例外。
有很多關于這個的教程,例如here
uj5u.com熱心網友回復:
time.sleep(10)并且wait = WebDriverWait(browser, 10)兩者都是顯式等待。
主要區別在于
time.sleep(10) 是最糟糕的顯式等待。
這意味著它將在定義的時間段內停止程式執行,在本例中為10 secs。
而WebDriverWait將EC每500 毫秒查找一次條件,如果找到則回傳,如果沒有則一次又一次地重試,直到發生超時,然后拋出
TimeOutException
這又是一個通用錯誤。
還,
由于顯式等待允許您等待條件發生,因此它們非常適合
synchronising瀏覽器及其 DOM 以及您的 WebDriver 腳本之間的狀態。
這是顯式等待的官方檔案。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/394788.html
