为什么Selenium WebDriver在MSBuild下测试失败后没有退出Firefox?

时间:2013-04-08 12:04:52

标签: selenium msbuild webdriver

我在.NET环境中使用Selenium WebDriver。我正在使用NUnit测试运行器中的WebDriver:

    [Test]
    public static void Should_register_user()
    {
        IWebDriver driver = new FirefoxDriver();

        ...

        driver.Quit();
    }

它工作得很好。如果我从MSBuild脚本运行这样的测试:packages \ NUnit.Runners.2.6.2 \ Tools \ nunit-console.exe / nologo S022.SeleniumTests.dll /xml=NUnit.Report.xml(不管我是不是使用NUnit社区任务或执行任务)。 测试执行但它失败了Firefox浏览器仍然打开,脚本中的执行等待我关闭浏览器窗口。当我这样做时,脚本会进一步执行。

这是Selenium所说的:

ProcessModel: Default    DomainUsage: Single
  Execution Runtime: net-3.5
  .F
  Tests run: 1, Errors: 0, Failures: 1, Inconclusive: 0, Time: 10,3118323 secon
  ds
    Not run: 0, Invalid: 0, Ignored: 0, Skipped: 0

  Errors and Failures:
  1) Test Failure : S022.SeleniumTests.RegistrationTests.Should_register
  _user
       Expected string length 6 but was 11. Strings differ at index 0.
    Expected: "Log-in"
    But was:  "News"
    -----------^

  at S022.SeleniumTests.RegistrationTests.Should_register_user() in S022.SeleniumTests\T
  ests\RegistrationTests.cs:line 22

如果测试通过,则执行按预期进行。

我做错了什么?

2 个答案:

答案 0 :(得分:4)

您正在[Test]方法中创建和销毁浏览器实例。当测试用例失败时,会抛出异常,并且永远不会执行对driver.Quit()的调用。您可能希望在[SetUp]方法中创建驱动程序实例,并在driver.Quit()方法中调用[TearDown]

答案 1 :(得分:-1)

我认为一旦你的测试用例失败,垃圾收集器仍然会拿起你的孤儿对象,但是如上所述,在tearDown()方法中做得更清楚。