2012-11-06 7 views
10

Krok WatiN, który działa jako część procesu ciągłej integracji, nie działa sporadycznie podczas próby dołączenia do instancji przeglądarki. Obecnie około 1 na 5 razy.Browser.AttachTo <T>() powoduje sporadyczny wyjątek "Limit czasu, gdy program Internet Explorer jest zajęty"

Browser.AttachTo<IE>(Find.ByTitle("Title of Popup")); 

z powodu następującego błędu:

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.IEWaitForComplete.WaitUntilNotNull(DoFunc`1 func, BuildTimeOutExceptionMessage exceptionMessage) 
    at WatiN.Core.Native.InternetExplorer.IEWaitForComplete.WaitWhileIEBusy(IWebBrowser2 ie) 
    at WatiN.Core.Native.InternetExplorer.IEWaitForComplete.WaitForCompleteOrTimeout() 
    at WatiN.Core.WaitForCompleteBase.DoWait() 
    at WatiN.Core.Native.InternetExplorer.AttachToIeHelper.FinishInitializationAndWaitForComplete(IE ie, SimpleTimer timer, Boolean waitForComplete) 
    at WatiN.Core.Native.InternetExplorer.AttachToIeHelper.Find(Constraint findBy, Int32 timeout, Boolean waitForComplete) 
    at WatiN.Core.Browser.AttachTo[T](Constraint constraint) 

robiłem wszystkie oczywiste rzeczy, które zostały zaproponowane w poprzednich postach:

tj Zabić wszystkie procesy Internet Explorer przed uruchomieniem krok Watin:

Process.GetProcessesByName("IEXPLORE").ToList().ForEach(p => p.Kill()); 

zwiększyć limity czasu przed wykonaniem jakichkolwiek czynności Watin:

var timeout = 60; 
Settings.AttachToBrowserTimeOut = timeout; 
Settings.WaitForCompleteTimeOut = timeout; 
Settings.WaitUntilExistsTimeOut = timeout; 

Każdy krok Watin jest przekazywana jako działanie w następnym bloku kodu:

Czy ktoś wie o czymś innym, co mogę zrobić/sprawdzić, aby dostać się do dna tego denerwującego komunikatu o błędzie?

+0

Jaki jest kontekst funkcjonowania WatiN? Czy działa na przykład w usłudze Windows CruiseControl.NET? Miałem wiele problemów z działaniem WatiN w usługach Windows, ponieważ usługi Windows są aplikacjami bezokienowymi. – NathanAldenSr

+0

Witam, przepraszam, nie wróciłem do ciebie wcześniej ... To agent jest usługą Windows i działa przy użyciu mojej nazwy użytkownika. Ma więc pełny dostęp do eksploratora internetu itp. Wszystko działa z wyjątkiem przywiązania, które, jak powiedziałem, nie działa sporadycznie. – CraftyFella

Odpowiedz

1

Miałem podobne problemy w przeszłości, a rozwiązaniem było po prostu ponowne użycie tego samego okna przeglądarki na sesję. Utwórz okno przeglądarki po wykonaniu pierwszego testu i użyj go do wszystkich testów, a następnie opcjonalnie zamknij je po zakończeniu sesji testowej. Oczywiście zależy to od tego, jakiej używamy uprzęży testowej, ale powinna działać. Tworzenie i niszczenie okien IE jest działaniem wymagającym dużej ilości zasobów, więc najlepiej jest go unikać, jeśli to możliwe.

+0

Witam, 2 okna, które próbuję dołączyć, są wyskakujące, więc nie mogę naprawdę użyć tego samego okna. Dziękuję za odpowiedź. – CraftyFella

Powiązane problemy