Nous avons une série de tests WATIN que nous utilisons pour exécuter CruiseControl toutes les heures. Tous les tests passent sur notre machine locale - mais lorsqu'ils sont exécutés avec CruiseControl, nous obtenons des pannes sporadiques. Nous utilisons CruiseControl en utilisant la ligne de commande.Les tests WATIN échouent avec TimeoutException lorsqu'ils sont exécutés à partir de CruiseControl
Nous n'utilisons pas le service CruiseControl. Nous utilisons IE8. Avant chaque test, nous utilisons WATIN pour fermer toutes les instances du navigateur afin de nous assurer que chaque test est complètement isolé.
Voici un exemple de la trace de la pile que nous voyons lorsque l'exception est levée:
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
Y at-il quelque chose que nous faisons pour empêcher cela? J'ai essayé de mettre Thread.Sleep() devant les lignes incriminées. Cela ne semble pas avoir d'effet. J'ai été assez prudent pour éviter Thread.Sleep() - et utiliser browser.WaitUntilContainsText.
J'ai recherché StackOverflow et les listes d'adresses des utilisateurs WATIN - il semble que d'autres personnes ont eu des problèmes similaires mais je n'ai vu aucune solution.
bon conseil, à proximité ne semble pas toujours le faire. – dove