У нас есть набор тестов WATIN, которые мы используем CruiseControl для запуска каждый час. Все тесты проходят на нашей локальной машине, но когда они запускаются с использованием CruiseControl, мы получаем случайные сбои.
Мы используем CruiseControl с помощью командной строки. Мы не используем сервис CruiseControl. Мы используем IE8.
Перед каждым тестом - мы используем WATIN, чтобы закрыть все экземпляры браузера, чтобы убедиться, что каждый тест полностью изолирован.
Вот пример трассировки стека, которую мы видим, когда генерируется исключение:
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
Есть ли что-то, что мы делаем, чтобы предотвратить это? Я попытался поместить Thread.Sleep () перед оскорбительными строками. Это, кажется, не имеет эффекта. Я был очень осторожен, чтобы избежать Thread.Sleep () и использовать browser.WaitUntilContainsText.
Я искал StackOverflow и списки адресов электронной почты пользователей WATIN - похоже, у других людей были похожие проблемы, но я не нашел решений.