Mamy kolekcję testów WATIN, w których używamy CruiseControl do uruchamiania co godzinę. Wszystkie testy są przekazywane na naszą maszynę lokalną - ale kiedy są uruchamiane za pomocą CruiseControl, mamy sporadyczne awarie.Testy WATIN kończące się niepowodzeniem z TimeoutException po uruchomieniu z CruiseControl
Używamy CruiseControl za pomocą wiersza poleceń. Nie korzystamy z usługi CruiseControl. Używamy IE8.
Przed każdym uruchomieniem testu używamy WATIN, aby zamknąć wszystkie wystąpienia przeglądarki, aby upewnić się, że każdy test jest całkowicie odizolowany.
Oto przykład śladu stosu jesteśmy świadkami, gdy jest wyjątek:
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
jest jeszcze coś zrobić, aby temu zapobiec? Próbowałem umieszczania Thread.Sleep() przed obrażającymi linii. To nie wydaje się mieć żadnego efektu. Byłem bardzo ostrożny, aby uniknąć Thread.Sleep() - i użyj przeglądarki.WaitUntilContainsText.
Przeszukałem listy użytkowników StackOverflow i WATIN - wydaje się, że inni ludzie mieli podobne problemy, ale nie widziałem żadnych rozwiązań.
Dobra wskazówka, zamknij nie zawsze tak jest. – dove