Selenium的启动和关闭
一般我们会在[TestInitalize]和[TestCleanup]方法中创建和关闭Selenium对象。但是,如果在[TestInitalize]中直接写创建Selenium对象的语句,那么在VS中运行多个TestMethod时,就会在一组测试之间反复多次的启动和停止Selenium Server,这是相当耗费时间的。
尽管有[ClassInitalize]和[ClassCleanup]标签,但是这个Microsoft.VisualStudio.TestTools.UnitTesting框架规定了:[ClassInitalize]和[ClassCleanup]标记的方法必须是静态方法,而[TestMethod]方法却必须是非静态的;那么,Selenium对象到底应该是静态还是非静态呢?
So,我们不能直接在测试类中创建Selenium对象,不管是ClassInitalize还是TestInitalize,都不太好。解决办法是提供公共类,在[TestInitalize]和[ClassCleanup]中调用。
Selenium公共类
public class MySelenium
{
private static ISelenium selenium
= null;
private static MyLog log;
public static ISelenium getSelenium() {
if (selenium == null) {
selenium = new DefaultSelenium("localhost", 4444,
"*iexplore", "http://ws-gisgtssts-03:8001/");
selenium.Start();
}
return selenium;
}
public static void stopSelenium() {try
{
selenium.Stop();
}
catch (Exception ex) {log.addlogWithException("login", "", ex.Message);
}
}
}
调用公共类
[TestInitialize]
public void SetupTest()
{
selenium = MySelenium.getSelenium();
selenium.Open("/Account/ChangePassword");
}
[ClassCleanup]
public static void TeardownTest()
{
MySelenium.stopSelenium();
}