我有一堆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()
电话:
如果我可以在运行第一个测试之前创建一些代码来创建chromedriver并在最后一次测试运行后停止它,那将会很棒。
更新:将[BeforeScenario]
更改为[BeforeFeature]
- 感谢李指出这一点。
答案 0 :(得分:3)
在每个方案不是特征之后,您将退出驱动程序。如果您将[AfterScenario]更改为[AfterFeature],您将获得一些性能提升。您可以使用[BeforeFeature]设置您的网络驱动程序。