【发布时间】:2020-03-22 22:44:28
【问题描述】:
我目前有一个非常简单的 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 文件中,它按预期工作。
我不确定为什么我不能将测试挂钩放在单独的文件中,因为它们将被所有测试/页面使用。我看错了吗?
【问题讨论】:
-
在您的 LoginPage 类中,您需要在构造函数中调用钩子。我看不到 LoginPage 类的任何构造函数。
标签: c# selenium selenium-chromedriver hook specflow