具有两个标签的Specflow场景打开两个窗口
问题描述:
我试图在一个场景中使用多个标签,但最终会打开每个标签的窗口,这会在[AfterScenario]
步骤中导致问题。对于一个例子,我有一个场景:具有两个标签的Specflow场景打开两个窗口
@Tag01 @Tag02
Scenario Outline: User Log In
Given I'm using the <ABC>
Given I Log in as AutomatedUser
Examples:
| ABC |
| SiteOne |
| SiteTwo |
而且我stepbase.cs文件方案之前:
[BeforeScenario("Tag01", "Tag02")]
public static void BeforeScenario()
{
StepBase.CreateBrowser(ConfigurationManager.AppSettings["BrowserType"]);
Console.WriteLine("selenium open Called");
}
有一种使用多个标签,没有它打开一个窗口,每个标签的方法吗?
答
你期望什么行为?
,如果你有这样的:
@Tag01
Scenario Outline: User Log In
... etc
你期望的BeforeScenario
被调用?或者只有你有两个标签?
通过你的问题的声音,你希望它调用,如果任何一个标签存在,但只有一次。
我想你必须自己处理。像这样的东西应该这样做:
public class Hooks
{
private bool BeforeScenarioDoneAlready{get;set;}
[BeforeScenario("Tag01", "Tag02")]
public void BeforeScenario()
{
if (!DoneBeforeScenarioAlready)
{
StepBase.CreateBrowser(ConfigurationManager.AppSettings["BrowserType"]);
Console.WriteLine("selenium open Called");
BeforeScenarioDoneAlready=true;
}
}
}
,如果你想让它只能做,如果有两个标签,那么你可以在你的BeforeScenario方法检查:
[BeforeScenario()]
public void BeforeScenario()
{
if(ScenarioContext.Current.ScenarioInfo.Tags.Contains("Tag01")
&& ScenarioContext.Current.ScenarioInfo.Tags.Contains("Tag02"))
{
StepBase.CreateBrowser(ConfigurationManager.AppSettings["BrowserType"]);
Console.WriteLine("selenium open Called");
}
}