Selenium C# 中 WebDriverWait 如何增强元素存在性验证?
在 Selenium C# 中,在执行操作之前验证元素是否存在对于确保测试准确性至关重要。WebDriverWait 类在这里大放异彩,它允许我们以编程方式暂停测试执行,直到指定的元素出现。
设置匿名函数
为了有效地利用 WebDriverWait,我们需要定义一个“Until”条件,其中包含必要的检查。您描述的直接方法无法按预期工作。我们将探索更精细的实现。
利用自定义扩展方法
为了增强 FindElement() 方法,我们引入一个接受超时参数的自定义扩展方法。这允许我们指定一个元素应该在其中定位的时间段,或者如果超过截止时间,则会引发异常。
以下扩展方法优雅地实现了这一点:
<code class="language-csharp">public static class WebDriverExtensions { public static IWebElement FindElement(this IWebDriver driver, By by, int timeoutInSeconds) { if (timeoutInSeconds > 0) { var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeoutInSeconds)); return wait.Until(drv => drv.FindElement(by)); } return driver.FindElement(by); } }</code>
用法和优势
此扩展方法易于使用,并消除了与隐式等待相关的性能问题。这是一个实际示例:
<code class="language-csharp">var driver = new FirefoxDriver(); driver.Navigate().GoToUrl("http://localhost/mypage"); var btn = driver.FindElement(By.CssSelector("#login_button")); btn.Click(); var employeeLabel = driver.FindElement(By.CssSelector("#VCC_VSL"), 10); Assert.AreEqual("Employee", employeeLabel.Text); driver.Close();</code>
通过在搜索元素时指定超时,我们的测试将有效地处理元素可能动态出现或消失的情况。这种方法确保了准确性并优化了测试性能。
以上是WebDriverWait如何在硒C#中增强元素的存在验证?的详细内容。更多信息请关注PHP中文网其他相关文章!