首页 >后端开发 >C++ >为什么我的 WebDriverWait 在没有断点的情况下运行时无法等待?

为什么我的 WebDriverWait 在没有断点的情况下运行时无法等待?

Barbara Streisand
Barbara Streisand原创
2024-12-30 20:33:09481浏览

Why Is My WebDriverWait Failing to Wait When Running Without Breakpoints?

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn