2009-07-17 6 views
7

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.

Répondre

3

Nous utilisons Teamcity, mais nous avons eu un problème similaire avec IE7. L'origine du problème a été ouvert IE. Vous avez déjà mentionné que vous utilisez Watin pour fermer toutes les instances ouvertes. Mais assurez-vous que vous utilisez ie.ForceClose(); dans TearDown et SetUp.

+0

bon conseil, à proximité ne semble pas toujours le faire. – dove

0

J'ai eu le même problème avec WaitUntil. Mais c'était seulement parce que le site n'était pas fiable sur le serveur et donc n'a pas ouvert donc je reçois un temps d'arrêt.

Peut-être que vous obtenez le même problème ...

Questions connexes