c# - 每个测试 session 启动和停止一次 chromedriver

标签 c# selenium nunit specflow

我有一堆作为specflow场景的一部分运行的selenium测试。我目前正在为每个功能启动和停止一次 ChromeDriver:

[Binding]
public class WebBrowser
{
    public static IWebDriver Current
    {
        get
        {
            if (!FeatureContext.Current.ContainsKey("browser"))
            {
                FeatureContext.Current["browser"] = new ChromeDriver();
            }
            return (IWebDriver)FeatureContext.Current["browser"];
        }
    }

    [BeforeFeature]
    public static void Close()
    {
        if (FeatureContext.Current.ContainsKey("browser"))
        {
            Current.Close();
            ((ChromeDriver) FeatureContext.Current["browser"]).Quit();
        }
    }
}

如果我可以在每个单元测试 session 运行时创建并退出一次 chromedriver,而不是在每个功能运行时创建和退出一次,那么测试运行速度会快得多。

有没有办法配置 nunit 在每次运行结束时运行一些代码?

如果我删除 chromedriver.Quit() 调用,则:

  • 运行我的测试后,Resharper 测试运行程序会永远旋转,从未报告测试运行已完成。
  • NUnit 测试运行程序工作正常,但在每次测试 session 运行后都会留下一个正在运行的驱动程序窗口。

如果我可以让一些代码在第一个测试运行之前创建 chromedriver 并在最后一个测试运行后停止它,那就太好了。

更新:将[BeforeScenario]更改为[BeforeFeature] - 感谢Lee指出这一点。

最佳答案

在每个场景不具备功能后,您将退出驱动程序。如果将 [AfterScenario] 更改为 [AfterFeature],您将获得一些性能提升。您可以使用 [BeforeFeature] 设置您的网络驱动程序。

关于c# - 每个测试 session 启动和停止一次 chromedriver,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9813653/

相关文章:

c# - 无法启动程序。 [VALUE].dll 不是 Visual Studio 2017 中有效的 Win32 应用程序错误

javascript - 无法使用javascript从网址获取文本数据

java - 使用 Java 的 Selenium WebDriver 多线程和浏览器隐藏

C# - Selenium - 重试属性不适用于 Selenium 超时

c# - Team City 阻止构建步骤运行

nunit - 使用 WinForms 和 NUnit 进行自动测试

c# - Count 和 foreach 产生不同的结果

C# WinForm Stop 控件属性设置为默认值时将其设置为默认值

c# - 拆解中的 NUnit 测试失败

c# - 泛型类上静态 Create() 方法的紧凑语法?