use*_*170 7 c# webdriver xunit.net selenium-webdriver
有没有办法在使用Xunit的Webdriver(Selenium)在同一浏览器中运行多个测试,目前xunit为每个新测试启动新浏览器,下面是示例代码
public class Class1
{
private FirefoxDriver driver;
public Class1()
{
driver = new FirefoxDriver();
}
[Fact]
public void Test()
{
driver.Navigate().GoToUrl("http://google.com");
driver.FindElementById("gbqfq").SendKeys("Testing");
}
[Fact]
public void Test2()
{
driver.Navigate().GoToUrl("http://google.com");
driver.FindElementById("gbqfq").SendKeys("Testing again");
}
}
Run Code Online (Sandbox Code Playgroud)
虽然我不知道Selenium,但我知道xUnit.net为每个测试方法创建了一个测试类的新实例,这可能解释了为什么你会看到你报告的行为:每个driver
字段都重新初始化测试方法,因为每次都会调用构造函数.
为了重用单个FirefoxDriver
实例,您可以使用xUnit.net的IUseFixture<T>
界面:
public class Class1 : IUseFixture<FirefoxDriver>
{
private FirefoxDriver driver;
public void SetFixture(FirefoxDriver data)
{
driver = data;
}
[Fact]
public void Test()
{
driver.Navigate().GoToUrl("http://google.com");
driver.FindElementById("gbqfq").SendKeys("Testing");
}
[Fact]
public void Test2()
{
driver.Navigate().GoToUrl("http://google.com");
driver.FindElementById("gbqfq").SendKeys("Testing again");
}
}
Run Code Online (Sandbox Code Playgroud)