Тесты WatiN 2.0 Firefox периодически терпят неудачу - PullRequest
0 голосов
/ 07 апреля 2011

У нас есть ряд тестов WatiN, запущенных из CruiseControl, но мы периодически получаем сбои. Наиболее распространенная точка сбоя - это когда вы делаете действительно простые вещи, например, нажимаете на ссылку. Вот два примера трассировки стека ...

WatiN.Core.Exceptions.TimeoutException: Тайм-аут в ожидании основного документ становится доступным ---> System.IO.IOException: операция не допускается на неподключенных Розетки. в System.Net.Sockets.NetworkStream.InitNetworkStream (Socket сокет, FileAccess Access) в WatiN.Core.Native.Mozilla.FireFoxClientPort.SendCommand (String данные) в WatiN.Core.Native.Mozilla.FireFoxClientPort.SendAndRead (String данные, логический результат, ожидаемый, логический checkForErrors, Object [] args) в WatiN.Core.Native.ClientPortBase.WriteAndReadAsBool (String data, Object [] args) в WatiN.Core.Native.JSBrowserBase.IsLoading () в WatiN.Core.Native.JSWaitForComplete.b__0 () в WatiN.Core.UtilityClasses.TryFuncUntilTimeOut.Try [Т] (DoFunc * * 1 1 004 func) в WatiN.Core.WaitForCompleteBase.WaitUntil (DoFunc`1 waitWhile, BuildTimeOutExceptionMessage исключение сообщения) в WatiN.Core.Native.JSWaitForComplete.WaitWhileDocumentNotAvailable () в WatiN.Core.FireFox.WaitForComplete (Int32 waitForCompleteTimeOut) в WatiN.Core.Element.FireEvent (String eventName, логическое waitForComplete, NameValueCollection eventProperties)
в WatiN.Core.Element.ClickImpl (Boolean waitforComplete) в ... [наш код]

... а также ...

WatiN.Core.Exceptions.TimeoutException: Тайм-аут в ожидании основного документ становится доступным на WatiN.Core.UtilityClasses.TryFuncUntilTimeOut.ThrowTimeOutException (Exception lastException, String message) в WatiN.Core.UtilityClasses.TryFuncUntilTimeOut.Try [Т] (DoFunc 1 func) at WatiN.Core.WaitForCompleteBase.WaitUntil(DoFunc 1 waitWhile, BuildTimeOutExceptionMessage исключение сообщения) в WatiN.Core.Native.JSWaitForComplete.WaitWhileDocumentNotAvailable () в WatiN.Core.FireFox.WaitForComplete (Int32 waitForCompleteTimeOut) в WatiN.Core.Element.FireEvent (String eventName, логическое waitForComplete, NameValueCollection eventProperties)
в WatiN.Core.Element.ClickImpl (Boolean waitforComplete) в ... [наш код]

Странно то, что в нем упоминается JSWaitForComplete, что кажется странным, поскольку это исключение из простой ссылки, к которой не прикреплен Javascript. В наших тестовых приспособлениях мы обязательно закрываем браузер, поэтому не должно быть устаревших экземпляров FF, засоряющих вещи. Все это немного загадка.

Есть ли у кого-нибудь предложения о том, что мы можем попытаться решить, эту проблему?

Это работает WatiN 2.0 Final и Firefox 3.6.13.

1 Ответ

1 голос
/ 07 апреля 2011

Одна проблема, с которой мы столкнулись при запуске серии функциональных тестов в Firefox, заключалась в том, что сценарии тестирования заканчивали один тест, а затем переходили к следующему тесту, прежде чем Firefox завершил работу.

Когда следующий тест попытался запустить, первое, что он попытался сделать, это запустить Firefox, но поскольку Firefox все еще был занят закрытием предыдущего сеанса, он периодически вызывал окно ошибки вместо запуска браузера. Это, очевидно, привело к провалу теста.

Были предложены следующие решения:

  1. добавить задержку в конце каждого теста, чтобы браузер успел правильно завершить работу.

  2. Используйте другой браузер или комбинацию браузеров для тестов.

Мы не пересматривали это с момента выпуска FF4, но я отмечаю, что FF4 имеет гораздо более быстрое время запуска и завершения работы, поэтому проблема также может быть решена путем обновления Firefox. Это может или не может быть вариантом, в зависимости от того, действительно ли вы хотите запустить тесты в FF3.6

...