有两个标签的 Specflow 场景打开两个 windows
Specflow scenario with two tags opens two windows
我试图在一个场景中使用多个标签,但它最终会为每个标签打开一个 window,这会导致 [AfterScenario]
步骤出现问题。例如,我有一个场景:
@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");
}
有没有办法在不为每个标签打开 window 的情况下使用多个标签?
您期望什么行为?
如果你有这个:
@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");
}
}
我试图在一个场景中使用多个标签,但它最终会为每个标签打开一个 window,这会导致 [AfterScenario]
步骤出现问题。例如,我有一个场景:
@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");
}
有没有办法在不为每个标签打开 window 的情况下使用多个标签?
您期望什么行为?
如果你有这个:
@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");
}
}