我有一堆作为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/