2009-07-17 6 views
7

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ń.

Odpowiedz

3

Używamy Teamcity, ale mieliśmy podobny problem z IE7. Początek problemu został otwarty IE. Wspomniałeś już, że używasz Watin do zamykania wszystkich otwartych instancji. Ale upewnij się, że używasz ie.ForceClose(); w TearDown i SetUp.

+0

Dobra wskazówka, zamknij nie zawsze tak jest. – dove

0

Miałem ten sam problem z WaitUntil. Ale to tylko dlatego, że witryna nie była zaufana na serwerze i dlatego nie została otwarta, więc mam czas.

Może masz ten sam problem ...

Powiązane problemy