C# 硒:测试间歇性失败
本文关键字:失败 测试 | 更新日期: 2023-09-27 18:36:49
我一直在使用C#硒来自动化应用程序。我在执行测试时面临间歇性失败的问题。
有时测试通过,有时它会失败。
失败状态为元素/框架/窗口不可用。
我一直在使用以下代码等待
WebDriverWait wait = new WebDriverWait(Driver.Instance, TimeSpan.FromSeconds(100));
IWebElement elementToWait = wait.Until<IWebElement>((d) =>
{
return Driver.Instance.FindElement(By.Id("Element ID")); ;
});
这种不一致是由于使用了网络驱动程序等待吗?为了避免这种情况,要遵循的最佳实践是什么?
这是一个非常广泛的问题,但这种情况发生在硒中的最常见原因是,当调用 FindElement 时,元素不在 DOM 中。
您可以尝试多种方法...您应该在驱动程序实例上设置隐式等待超时,如下所示:
driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(50));
这应该在初始化 WebDriver 实例后立即完成。
您可以尝试的第二件事是使用预期条件调用 FindBy:
IWebElement element = wait.Until(ExpectedConditions.ElementExists(By.Id("Element ID")));
有几种不同的预期条件可用,您可以测试它们以查看最适合您的条件。
我想
看看上面的代码。 您是否在页面之间导航?
如果是这样,请尝试在此之前添加短暂的睡眠:
Thread.Sleep(500);
隐式等待很棒,但如果没有短暂的硬编码睡眠,它们往往具有很高的失败率。 通常只需要 100 毫秒。
您提到的问题是因为 100 秒后,您的元素仍然没有出现在 DOM 上,请将您的日志发送给我们,但我相信这是因为。
隐式/显式等待的工作方式是,在您设置时间之后,如果元素不存在,则会引发异常并显示超时消息(在您的情况下为 100 秒后)。
但同样,请提供更多信息。