具有两个标签的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"); 
    } 
}