2 回答

TA貢獻1775條經驗 獲得超8個贊
概括:
在您的代碼中嘗試增加顯式等待的時間。它不會減慢您的速度,但會阻止這些異常。嘗試 5 秒而不是 1 秒。試試這個
wait(driver,5)
我們使用等待是因為加載 DOM 需要時間,有時我們需要等待頁面/元素加載/隱藏/更改,我們必須根據更改采取行動。
顯式等待的作用是等待給定的時間來滿足預期的條件,并每 500 毫秒檢查一次條件是否滿足。這樣,在執行下一個任務之前,您最多會損失 500 毫秒的時間。如果條件沒有及時滿足,就會拋出超時異常。顯式等待并不能解決您的所有問題。
您仍然需要檢查可能的異常并決定發生這種情況時要做什么。有些網站加載速度很慢,或者您的帶寬有時很低。那么你就沒有辦法加快這個過程了。
您必須首先分析頁面并確定會發生什么。如果您正在等待某個元素存在但有可能它可能不存在,那么您應該相應地處理異常。
如果您正在檢查頁面中是否存在元素,那么最好不要等待元素,而是嘗試使用find_elements_
并檢查列表的大小。這樣你就可以避免異常并且會更快。
driver.find_elements(By.ID, "locator").size()>0

TA貢獻1946條經驗 獲得超4個贊
是的,顯式等待(webdriver wait)解決了這個問題。其他簡單的方法是創建一個帶有時間秒數的 for 循環并在循環內寫入 find 元素,因此即使失敗,它也會檢查 180 秒并寫入超出預期等待時間的條件
for (int second = 0; second < 60; second++) {
try {}
catch (WebDriverException we)
{}
if (second >= 60) {
//write failure
}
添加回答
舉報