WebDriverWait 未如預期等待
嘗試從元素擷取文字時,會實作等待以確保元素在先前可見檢索。然而,當程式碼在沒有斷點的情況下執行時,等待似乎被繞過,導致異常。
問題解釋
提供的程式碼片段使用了FindElement 方法WebDriverWait 類,如果在指定的超時期限(本例中為30 秒)內找不到元素,則會引發異常。這種即時性可能是由於元素在等待期到期時不可見或未載入而導致的。
解決方案
作為替代方案,您可以使用 ElementIsVisible 條件ExpectedConditions 類別與 WebDriverWait 結合使用。這種方法將導致等待,直到元素滿足條件(在本例中為可見)。此外,您可以使用 GetAttribute 方法來取得元素的innerHTML,而不是 Text 屬性。
以下是使用ElementIsVisible 條件的範例:
string messageText = new WebDriverWait(driver, TimeSpan.FromSeconds(10)).Until(ExpectedConditions.ElementIsVisible(By.ClassName("block-ui-message"))).GetAttribute("innerHTML");
DotNetSeleniumExtras.WaitHelpers Option
如果您正在聘用的Selenuium您可以利用ExpectedConditions 類別中的 ElementIsVisible 條件,如下所示:
string messageText = new WebDriverWait(driver, TimeSpan.FromSeconds(10)).Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementIsVisible(By.ClassName("block-ui-message"))).GetAttribute("innerHTML");
以上是為什麼我的 WebDriverWait 在沒有斷點的情況下運行時無法等待?的詳細內容。更多資訊請關注PHP中文網其他相關文章!