Tenemos una colección de pruebas WATIN que estamos usando CruiseControl para ejecutar cada hora. Todas las pruebas pasan en nuestra máquina local, pero cuando se ejecutan usando CruiseControl obtenemos fallas esporádicas.Prueba WATIN que falla con TimeoutException cuando se ejecuta desde CruiseControl
Estamos utilizando CruiseControl usando la línea de comando. No estamos usando el servicio CruiseControl. Estamos usando IE8.
Antes de ejecutar cada prueba, utilizamos WATIN para cerrar todas las instancias del navegador y asegurarnos de que cada prueba esté completamente aislada.
Aquí se muestra un ejemplo de la traza de la pila que estamos viendo cuando se produce la excepción:
Message: WatiN.Core.Exceptions.TimeoutException : Timeout while Internet Explorer busy
at WatiN.Core.UtilityClasses.TryFuncUntilTimeOut.ThrowTimeOutException(Exception lastException, String message)
at WatiN.Core.UtilityClasses.TryFuncUntilTimeOut.HandleTimeOut()
at WatiN.Core.UtilityClasses.TryFuncUntilTimeOut.Try[T](DoFunc`1 func)
at WatiN.Core.WaitForCompleteBase.WaitUntil(DoFunc`1 waitWhile, BuildTimeOutExceptionMessage exceptionMessage)
at WatiN.Core.Native.InternetExplorer.WaitForComplete.WaitWhileIEBusy(IWebBrowser2 ie)
at WatiN.Core.Native.InternetExplorer.IEWaitForComplete.DoWait()
at WatiN.Core.DomContainer.WaitForComplete(IWait waitForComplete)
at WatiN.Core.IE.WaitForComplete(Int32 waitForCompleteTimeOut)
at WatiN.Core.DomContainer.WaitForComplete()
at WatiN.Core.Element.WaitForComplete()
at WatiN.Core.Element.Click()
at Symetra.Web.Core.AutomatedTesting.WatiNTests.CommonTests.LinkTest(Browser browser, String linkText, String message) in d:\Source\BuildArea\OSS\Symetra.Web.Core.AutomatedTesting\Symetra.Web.Core.AutomatedTesting.WatiNTests\Common\CommonTests.cs:line 63
at Symetra.Web.Core.AutomatedTesting.WatiNTests.CommonTests.LinkTest(Browser browser, String linkText) in d:\Source\BuildArea\OSS\Symetra.Web.Core.AutomatedTesting\Symetra.Web.Core.AutomatedTesting.WatiNTests\Common\CommonTests.cs:line 57
at Symetra.Web.Core.AutomatedTesting.WatiNTests.GlowTests.BreadCrumbFixture.testid1Test() in d:\Source\BuildArea\OSS\Symetra.Web.Core.AutomatedTesting\Symetra.Web.Core.AutomatedTesting.WatiNTests\GlowTests\BreadCrumbFixture.cs:line 72
¿Hay algo que hacemos para evitar esto? Intenté poner Thread.Sleep() delante de las líneas ofensivas. Eso no parece tener un efecto. He tenido mucho cuidado de evitar Thread.Sleep() - y uso el navegador.WaitUntilConTeinsText.
He buscado StackOverflow y las listas de correo electrónico de los usuarios de WATIN, parece que otras personas han tenido problemas similares, pero no vi ninguna solución.
buen consejo, cerrar no parece que siempre lo haga. – dove