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.
buon consiglio, vicino non sembra sempre farlo. – dove