2009-07-17 81 views
7

Abbiamo una raccolta di test WATIN che stiamo utilizzando CruiseControl per l'esecuzione ogni ora. Tutti i test passano sul nostro computer locale, ma quando vengono eseguiti con CruiseControl si verificano guasti sporadici.Test WATIN non riusciti con TimeoutException quando eseguito da CruiseControl

Stiamo usando CruiseControl utilizzando la riga di comando. Non stiamo utilizzando il servizio CruiseControl. Stiamo usando IE8.

Prima di eseguire ogni test, utilizziamo WATIN per chiudere tutte le istanze del browser per assicurarsi che ogni test sia completamente isolato.

Ecco un esempio di analisi dello stack che stiamo vedendo quando viene generata l'eccezione:

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 

C'è qualcosa che facciamo per evitare questo? Ho provato a mettere Thread.Sleep() di fronte alle righe offensive. Questo non sembra avere un effetto. Sono stato abbastanza attento a evitare Thread.Sleep() - e utilizzare browser.WaitUntilContainsText.

Ho cercato StackOverflow e le liste email degli utenti di WATIN - sembra che altre persone abbiano avuto problemi simili ma non ho visto nessuna soluzione.

risposta

3

Stiamo usando Teamcity, ma abbiamo riscontrato un problema simile con IE7. L'origine del problema è stata aperta IE. Hai già detto che usi Watin per chiudere tutte le istanze aperte. Ma assicurati di utilizzare ie.ForceClose(); in TearDown e SetUp.

+0

buon consiglio, vicino non sembra sempre farlo. – dove

0

Ho avuto lo stesso problema con WaitUntil. Ma era solo perché il sito non era attendibile sul server e quindi non si apriva, quindi ho tempo.

Forse si ottiene lo stesso problema ...