WatiN 2.0 Firefox测试间歇性地失败

时间:2011-04-07 15:14:31

标签: firefox timeout cruisecontrol.net watin cruisecontrol

我们从CruiseControl运行了许多WatiN测试,但是我们遇到了间歇性故障。最常见的失败点是在执行非常简单的操作时,例如单击链接。这是两个示例堆栈跟踪...

  

WatiN.Core.Exceptions.TimeoutException:   等待主要时超时   文件变得可用--->   System.IO.IOException:操作   不连接时不允许   插座。在   System.Net.Sockets.NetworkStream.InitNetworkStream(插座   socket,FileAccess Access)at   WatiN.Core.Native.Mozilla.FireFoxClientPort.SendCommand(字符串   数据)   WatiN.Core.Native.Mozilla.FireFoxClientPort.SendAndRead(字符串   data,Boolean resultExpected,Boolean   checkForErrors,Object [] args)at   WatiN.Core.Native.ClientPortBase.WriteAndReadAsBool(字符串   data,Object [] args)at   WatiN.Core.Native.JSBrowserBase.IsLoading()   在   WatiN.Core.Native.JSWaitForComplete.b__0()   在   WatiN.Core.UtilityClasses.TryFuncUntilTimeOut.Try [T](DoFunc 1 func) --- End of inner exception stack trace --- at WatiN.Core.UtilityClasses.TryFuncUntilTimeOut.ThrowTimeOutException(Exception lastException, String message) at WatiN.Core.UtilityClasses.TryFuncUntilTimeOut.Try[T](DoFunc 1   func)at   WatiN.Core.WaitForCompleteBase.WaitUntil(DoFunc`1   waitWhile,   BuildTimeOutExceptionMessage   exceptionMessage)at   WatiN.Core.Native.JSWaitForComplete.WaitWhileDocumentNotAvailable()   在   WatiN.Core.FireFox.WaitForComplete(的Int32   waitForCompleteTimeOut)at   WatiN.Core.Element.FireEvent(字符串   eventName,Boolean waitForComplete,   NameValueCollection eventProperties)
  在   WatiN.Core.Element.ClickImpl(布尔   waitforComplete)at ... [我们的代码]

......还有......

  

WatiN.Core.Exceptions.TimeoutException:   等待主要时超时   文件可用于   WatiN.Core.UtilityClasses.TryFuncUntilTimeOut.ThrowTimeOutException(例外   lastException,String message)at   WatiN.Core.UtilityClasses.TryFuncUntilTimeOut.Try [T](DoFunc 1 func) at WatiN.Core.WaitForCompleteBase.WaitUntil(DoFunc 1   waitWhile,   BuildTimeOutExceptionMessage   exceptionMessage)at   WatiN.Core.Native.JSWaitForComplete.WaitWhileDocumentNotAvailable()   在   WatiN.Core.FireFox.WaitForComplete(的Int32   waitForCompleteTimeOut)at   WatiN.Core.Element.FireEvent(字符串   eventName,Boolean waitForComplete,   NameValueCollection eventProperties)
  在   WatiN.Core.Element.ClickImpl(布尔   waitforComplete)at ... [我们的代码]

奇怪的是它提到了JSWaitForComplete,这看起来很奇怪,因为该异常来自没有任何附加Javascript的普通链接。在我们的测试装置中,我们确保关闭浏览器,因此不应该有陈旧的FF实例堵塞事情。这有点神秘。

有没有人对我们可以尝试解决此问题的事情有任何建议?

这是运行WatiN 2.0 Final和Firefox 3.6.13。

1 个答案:

答案 0 :(得分:1)

我们在Firefox中运行一系列功能测试时遇到的一个问题是测试脚本正在完成一个测试,然后在Firefox完成关闭之前继续进行下一个测试。

当下一个测试尝试开始运行时,它尝试做的第一件事是启动Firefox,但由于Firefox仍然忙着关闭前一个会话,它会间歇性地抛出一个错误框而不是启动浏览器。这显然导致测试失败。

我们提出的解决方案是:

  1. 在每次测试结束时添加延迟,以便浏览器有时间正常关闭。

  2. 使用其他浏览器或浏览器组合进行测试。

  3. 自FF4发布以来,我们还没有重新审视这个问题,但我注意到FF4的启动和关闭时间要快得多,因此升级Firefox也可以解决问题。这可能是也可能不是一个选项,具体取决于您是否确实要在FF3.6中运行测试