2009-07-17 101 views
7

Chúng tôi có một bộ sưu tập kiểm tra WATIN chúng tôi đang sử dụng CruiseControl để chạy mỗi giờ. Tất cả các bài kiểm tra vượt qua trên máy địa phương của chúng tôi - nhưng khi chúng được chạy bằng CruiseControl, chúng tôi nhận được các lỗi không thường xuyên.Kiểm tra WATIN thất bại với TimeoutException khi chạy từ CruiseControl

Chúng tôi đang sử dụng CruiseControl bằng dòng lệnh. Chúng tôi không sử dụng dịch vụ CruiseControl. Chúng tôi đang sử dụng IE8.

Trước mỗi lần chạy thử - chúng tôi sử dụng WATIN để đóng tất cả các phiên bản của trình duyệt để đảm bảo mỗi thử nghiệm được phân lập hoàn toàn.

Dưới đây là một ví dụ về stack trace chúng ta đang thấy khi ngoại lệ được ném:

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 

Có bất cứ điều gì chúng ta làm gì để ngăn chặn điều này? Tôi đã thử đặt Thread.Sleep() trước các dòng vi phạm. Điều đó dường như không có hiệu lực. Tôi đã khá cẩn thận để tránh Thread.Sleep() - và sử dụng browser.WaitUntilContainsText.

Tôi đã tìm kiếm danh sách email StackOverflow và WATIN của người dùng - có vẻ như những người khác đã gặp sự cố tương tự nhưng tôi không thấy bất kỳ giải pháp nào.

Trả lời

3

Chúng tôi đang sử dụng Teamcity, nhưng chúng tôi có vấn đề tương tự với IE7. Nguồn gốc của vấn đề đã được mở IE. Bạn đã đề cập rằng bạn sử dụng Watin để đóng tất cả các phiên bản mở. Nhưng hãy chắc chắn rằng bạn sử dụng ie.ForceClose(); trong TearDown và SetUp.

+0

mẹo tốt, đóng không phải lúc nào cũng như vậy. – dove

0

Tôi đã gặp sự cố tương tự với WaitUntil. Nhưng đó chỉ là vì trang web không được tin cậy trên máy chủ và do đó không mở nên tôi có thời gian rảnh.

Có thể bạn gặp phải cùng một sự cố ...