硒规格流钩在测试运行后关闭驱动程序



我目前有一个非常简单的Selenium Specflow框架,可以打开Chrome或Firefox浏览器。我想添加一个AfterTestRun钩子来退出和处理驱动程序,以便浏览器正确关闭。

登录页面.cs:

[Binding]
public class LoginPage
{
private IWebDriver Driver { get; set; }
[Given("I open a (.*) browser with a (.*) resolution (.*)")]
public IWebDriver CreateBrowserInstance(Browser browser, BrowserResolution resolution, bool headless)
{
switch(browser)
{
case Browser.Chrome:
Driver = StaticWebDriverFactory.GetChromeWebDriver(resolution, headless);
return Driver;
case Browser.Firefox:
Driver = StaticWebDriverFactory.GetFirefoxWebDriver(resolution, headless);
return Driver;
default:
throw new PlatformNotSupportedException($"{browser} is not currently supported.");
}
}
}

钩子.cs

[Binding]
public class Hooks
{
private IWebDriver Driver { get; }
[AfterTestRun]
public void AfterTestRun()
{
Driver.Quit();
Driver.Dispose();
}
}

当我没有 Hooks 文件时,测试将按预期打开浏览器。但是,我添加它并运行测试,测试被跳过。我不确定钩子哪里出了问题。

编辑:

我试图将[AfterScenario]放在LoginPage.cs文件中,它按预期工作。

我不确定为什么我不能将我的测试钩子放在一个单独的文件中,因为它们将被所有测试/页面使用。我看错了吗?

我不确定为什么我不能将我的测试钩子放在单独的文件中,因为 它们将被所有测试/页面使用。我是不是看错了 道路?

您可以将测试挂钩放在单独的文件中[这是最佳实践],也可以多次使用。测试运行器将执行所有钩子方法。

之前/之后功能和测试运行之前/之后事件的绑定方法必须是静态的

现在,在您的情况下,调试并检查您的Driver属性是否具有要在测试后运行方法中关闭的 webdriver 实例。

通过查看您的代码,似乎 Hooks 类中的Driver属性没有 Web 驱动程序的当前实例。

相关内容

  • 没有找到相关文章

最新更新