一、隱式等待
Selenium 有一種內建的方式來自動等待元素,稱為隱式等待。 可以使用瀏覽器選項中的超時功能或驅動程式方法(如下所示)設定隱式等待值。
這是一個全域性設定,適用於整個會話的每個元素位置呼叫。 預設值為 ,這意味著如果找不到該元素,它將 立即返回錯誤。如果設定了隱式等待,驅動程式將等待 返回錯誤之前所提供值的持續時間。請注意,只要 元素被找到,驅動程式將返回元素引用,程式碼將繼續執行, 因此,較大的隱式等待值不一定會增加會話的持續時間。
警告:不要混合使用隱式等待和顯式等待。 這樣做可能會導致不可預測的等待時間。 例如,設定 10 秒的隱式等待 以及 15 秒的顯式等待 可能會導致 20 秒後發生超時。
使用隱式等待求解我們的示例如下所示:
1 driver.implicitly_wait(2)
二、顯式等待
顯式等待是新增到程式碼中的迴圈,用於輪詢應用程式 讓特定條件在退出迴圈之前評估為 true,並且 繼續執行程式碼中的下一個命令。如果在指定的超時值之前未滿足條件, 程式碼將給出超時錯誤。由於應用程式不處於所需狀態的方法有很多, 顯式等待是指定要等待的確切條件的絕佳選擇 在每個地方都需要它。 另一個不錯的功能是,預設情況下,Selenium Wait 類會自動等待指定元素存在。
此示例以 lambda 的形式顯示正在等待的條件。Python 還支援預期條件
1 wait = WebDriverWait(driver, timeout=2) 2 wait.until(lambda d : revealed.is_displayed())
三、強制等待
強制等待是新增到程式碼中,當執行到該位置,程式碼會被強制等待預設的時間時長,當超過預設的時長時,繼續往下執行
1 import time 2 3 # 預設強制等待3秒 4 time.sleep(3)