Selenium Specflow挂钩在测试运行后关闭驱动程序

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

LoginPage.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.");
        }
    }
}

Hooks.cs

[Binding]
public class Hooks
{
    private IWebDriver Driver { get; }

    [AfterTestRun]
    public void AfterTestRun()
    {
        Driver.Quit();
        Driver.Dispose();
    }
}

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

编辑:

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

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

zhu_yun_yun 回答:Selenium Specflow挂钩在测试运行后关闭驱动程序

  

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

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

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

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

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

本文链接:https://www.f2er.com/3022120.html

大家都在问