c# – 带有两个标记的Specflow场景打开两个窗口
作者:互联网
我试图在一个场景中使用多个标签,但最终会为每个标签打开一个窗口,这会在[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");
}
}
标签:c,selenium,specflow 来源: https://codeday.me/bug/20190623/1271926.html