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
如果您正在雇用通过 NuGet 的 SeleniumExtras.WaitHelpers,您可以利用 ExpectedConditions 类中的 ElementIsVisible 条件,如下所示:
string messageText = new WebDriverWait(driver, TimeSpan.FromSeconds(10)).Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementIsVisible(By.ClassName("block-ui-message"))).GetAttribute("innerHTML");
以上是为什么我的 WebDriverWait 在没有断点的情况下运行时无法等待?的详细内容。更多信息请关注PHP中文网其他相关文章!