2009-07-17 17 views
7

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.

Respuesta

3

Estamos usando Teamcity, pero tuvimos un problema similar con IE7. El origen del problema se abrió IE. Ya mencionas que usas Watin para cerrar todas las instancias abiertas. Pero asegúrese de usar ie.ForceClose(); en TearDown y SetUp.

+0

buen consejo, cerrar no parece que siempre lo haga. – dove

0

Tuve el mismo problema con WaitUntil. Pero fue solo porque el sitio no era de confianza en el servidor y no se abrió, así que tengo un tiempo de espera.

Quizás tenga el mismo problema ...

Cuestiones relacionadas