每次测试时启动和停止chromedriver一次

时间:2012-03-21 22:12:45

标签: c# selenium nunit specflow

我有一堆selenium测试作为specflow场景的一部分运行。我目前正在为每个功能启动和停止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();
        }
    }
}

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

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

如果我删除了chromedriver.Quit()电话:

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

如果我可以在运行第一个测试之前创建一些代码来创建chromedriver并在最后一次测试运行后停止它,那将会很棒。

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

1 个答案:

答案 0 :(得分:3)

在每个方案不是特征之后,您将退出驱动程序。如果您将[AfterScenario]更改为[AfterFeature],您将获得一些性能提升。您可以使用[BeforeFeature]设置您的网络驱动程序。