Ido*_*day 5 selenium nunit specflow
我正在使用Specflow与NUnit和Selenium,并希望在所有测试中共享驱动程序的实例.我可以使用FeatureContext执行此功能,但无法查看所有测试的任何内容.我知道这可能不是正确的方法,但我想知道是否有办法.
请帮助举例.
谢谢
Sam*_*der 15
有几种方法可以做到这一点.本页涵盖了大多数内容
我个人可能会做的是定义一个SeleniumContext类并在我的所有Step类构造函数中需要这个类,然后告诉SpecFlow的IOC在每个场景中使用相同的实例:
首先创建用于保存selenium驱动程序实例的类
public class SeleniumContext
{
public SeleniumContext()
{
//create the selenium context
WebDriver = new ...create the flavour of web driver you want
}
public IWebDriver WebDriver{get; private set;}
}
Run Code Online (Sandbox Code Playgroud)
然后设置IOC每次都返回相同的实例
[Binding]
public class BeforeAllTests
{
private readonly IObjectContainer objectContainer;
private static SeleniumContext seleniumContext ;
public BeforeAllTests(IObjectContainer container)
{
this.objectContainer = container;
}
[BeforeTestRun]
public static void RunBeforeAllTests()
{
seleniumContext = new SeleniumContext();
}
[BeforeScenario]
public void RunBeforeScenario()
{
objectContainer.RegisterInstanceAs<SeleniumContext>(seleniumContext );
}
}
Run Code Online (Sandbox Code Playgroud)
然后确保您的步骤类始终在其构造函数中询问上下文(您需要在每个步骤类中执行此操作)
[Bindings]
public class MySteps
{
private SeleniumContext seleniumContext;
public MyClass(SeleniumContext seleniumContext)
{
//save the context so you can use it in your tests
this.seleniumContext = seleniumContext;
}
//then just use the seleniumContext.WebDriver in your tests
}
Run Code Online (Sandbox Code Playgroud)
或者,如果您已将实例存储在要素上下文中,则可以使用BeforeFeature挂钩来保存同一实例:
[Binding]
public class BeforeAllTests
{
private static WebDriver webDriver;
[BeforeTestRun]
public static void RunBeforeAllTests()
{
webDriver = new WebDriver();
}
[BeforeFeature]
public static void RunBeforeFeature()
{
FeatureContext["WebDriver"] = webDriver;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4035 次 |
| 最近记录: |