Selenium的等待操作

YF-GX發表於2024-06-26

一、隱式等待

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)

相關文章