带有两个标签的Specflow场景打开两个窗口
本文关键字:两个 窗口 标签 Specflow | 更新日期: 2023-09-27 18:18:04
我试图在一个场景中使用多个标签,但它最终为每个标签打开一个窗口,这会在[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");
}
是否有一种方法可以使用多个标签,而不需要为每个标签打开一个窗口?
你期望什么行为?
如果你有这个:
@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");
}
}