當實現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類別並使用它:
以上是為什麼我的 WebDriverWait 不等待元素?的詳細內容。更多資訊請關注PHP中文網其他相關文章!