Тесты WATIN не выполняются с TimeoutException при запуске из CruiseControl - PullRequest
7 голосов
/ 18 июля 2009

У нас есть набор тестов 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 - похоже, у других людей были похожие проблемы, но я не нашел решений.

Ответы [ 2 ]

3 голосов
/ 03 августа 2009

Мы используем Teamcity, но у нас была похожая проблема с IE7. Происхождение проблемы было открыто IE. Вы уже упоминали, что используете Watin, чтобы закрыть все открытые экземпляры. Но убедитесь, что вы используете ie.ForceClose (); в TearDown и SetUp.

0 голосов
/ 17 сентября 2009

У меня была такая же проблема с WaitUntil. Но это было только потому, что сайт не был доверенным на сервере и поэтому не открывался, поэтому я получаю время ожидания.

Может быть, у вас та же проблема ...

...