具有两个标记的Specflow场景打开两个窗口

时间:2015-10-15 18:22:01

标签: c# selenium specflow

我尝试在一个场景中使用多个标签,但最终会为每个标签打开一个窗口,这会在export { foo as default }步骤中导致问题。举个例子,我有一个场景:

[AfterScenario]

我的stepbase.cs文件在场景之前:

@Tag01 @Tag02
Scenario Outline: User Log In
Given I'm using the <ABC>
Given I Log in as AutomatedUser

Examples:
| ABC     |
| SiteOne |
| SiteTwo |

有没有办法使用多个标签而不为每个标签打开一个窗口?

1 个答案:

答案 0 :(得分:4)

您期望什么行为?

如果你有这个:

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