首頁 >後端開發 >C++ >為什麼我的 WebDriverWait 不等待元素?

為什麼我的 WebDriverWait 不等待元素?

Patricia Arquette
Patricia Arquette原創
2025-01-03 16:29:39616瀏覽

Why Isn't My WebDriverWait Waiting for the Element?

WebDriverWait 不等待指定的元素

問題

當實現WebDriverWait 等待元素出現後再檢索其文字時,等待功能似乎被忽略,導致異常。

解釋

根本原因:

預設情況下,WebDriverWait 使用輪詢間隔定期檢查元素是否存在。如果該元素在初始檢查期間未立即可用,則後續輪詢間隔可能不夠頻繁,無法捕捉該元素的出現,從而導致異常。

解決方案

1.增加輪詢頻率:

為了確保WebDriverWait 更頻繁地檢查元素,請透過將較小值的TimeSpan傳遞給WebDriverWait 建構函數來增加輪詢間隔:

WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(1));

2.使用 ExpectedConditions.ElementIsVisible:

或者,您可以使用 SeleniumExtras.WaitHelpers 中的 ExpectedConditions.ElementIsVisible 方法,該方法明確等待元素變得可見並可用於交互。這消除了輪詢依賴性:

string messageText = new WebDriverWait(driver, TimeSpan.FromSeconds(30)).Until(ExpectedConditions.ElementIsVisible(By.ClassName("block-ui-message"))).GetAttribute("innerHTML");

3。使用DotNetSeleniumExtras.WaitHelpers:

如果您使用DotNetSeleniumExtras.WaitHelpers nuget包,您可以直接匯入ExpectedConditions類別並使用它:

string messageText = new WebDriverWait(driver, TimeSpan.FromSeconds(30)).Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementIsVisible(By.ClassName("block-ui-message"))).GetAttribute("innerHTML");

以上是為什麼我的 WebDriverWait 不等待元素?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn