0

我刚刚开始使用 Selenium - 目前我只对 IE 感兴趣,因为它是一个内部网站,而不是供公众使用的。我IEDriverServer.exe用来设置我的浏览器会话,但我不确定是否需要为每个测试重新创建它,或者它是否会自动保持浏览器会话/测试的原子性。我无法找到有关此的任何信息,因为大多数示例都是针对单个测试而不是一批单元测试。

所以目前我有

[TestInitialize]
public void SetUp()
{              
   _driver = new InternetExplorerDriver();
}

[TestCleanup]
public void TearDown()
{
   _driver.Close();
   _driver.Quit();
}

这是正确的还是我为每个测试做额外的不必要的工作?我应该在声明时对其进行初始化吗?如果是这样,我如何管理它的生命周期?我想我可以调用.Close()每个测试来杀死浏览器窗口,但是呢.Quit()

4

1 回答 1

1

我将 Selenium 与 NUnit 一起使用,但您不需要每次都重新创建它。由于您使用的是 MSTest,我会这样做:

[ClassInitialize]
public void SetUp()
{              
   _driver = new InternetExplorerDriver();
}

[ClassCleanup]
public void TearDown()
{
   _driver.Close();
   _driver.Quit();
}

ClassInitialize每次测试类初始化ClassCleanup都会调用一次代码,每次测试类拆解/处置都会调用一次代码。

虽然这仍然不能保证,因为测试运行器可能会创建多个测试线程:

http://blogs.msdn.com/b/nnaderi/archive/2007/02/17/explaining-execution-order.aspx

您还必须考虑每次要测试哪种状态。每次关闭并启动新的浏览器会话的最常见原因是您可以有一个干净的工作状态。

正如您所指出的,有时这是不必要的工作,但是您的测试起点是什么?

对我来说,每个测试类都有一个浏览器,有一种方法可以退出我的 Web 应用程序并在每次测试结束时保留在登录页面。

于 2012-11-26T15:25:28.160 回答