2012-11-06 12 views
10

एक सतत एकीकरण निर्माण प्रक्रिया के हिस्से के रूप में चलने वाला एक WatiN चरण अंततः ब्राउज़र उदाहरण से अटैचमेंट करने का प्रयास करते समय विफल रहा है। वर्तमान में लगभग 5 में से 1 बार।ब्राउज़र। एटैच <T>() इंटरमीटेंट अपवाद का कारण बनता है "इंटरनेट एक्सप्लोरर व्यस्त होने पर टाइमआउट"

यानी:

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) 

मैं सभी स्पष्ट बातें जो पिछले पोस्ट में सुझाव दिया गया है किया है:

Browser.AttachTo<IE>(Find.ByTitle("Title of Popup")); 
निम्नलिखित त्रुटि के साथ

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

किसी भी Watin चरणों चलाने से पहले समय समाप्ति बढ़ाएँ:: एक Watin कदम को चलाने से पहले सभी इंटरनेट एक्सप्लोरर प्रक्रियाओं को बंद

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

प्रत्येक Watin कदम निम्नलिखित कोड ब्लॉक में एक कार्रवाई के रूप में में पारित हो जाता है:

public void UseAndCloseBrowser(Action<Browser> action, Browser browser) 
{ 
    try 
    { 
     action(browser); 
     browser.WaitForComplete(); 
    } 
    finally 
    { 
     Log(Level.Info, "Attempting to close browser {0}", browser.Title); 
     browser.Close(); 
     browser.Dispose(); 
    } 

} 

क्या किसी को कुछ और पता है जो मैं कर सकता हूं/इस परेशान त्रुटि संदेश के नीचे जाने के लिए जांच सकता हूं?

+0

WatiN चल रहे संदर्भ क्या है? क्या यह एक CruiseControl.NET विंडोज सेवा के भीतर चल रहा है, उदाहरण के लिए? मुझे विंडोज सेवाओं के भीतर से चल रहे WatiN के साथ बहुत सारी समस्याएं आई हैं क्योंकि विंडोज सेवाएं विंडो रहित एप्लिकेशन हैं। – NathanAldenSr

+0

हाय, माफ करना, मैं जल्द ही आपसे वापस नहीं आया .. यह एजेंट एक विंडोज सेवा है और मेरे उपयोगकर्ता नाम का उपयोग कर चल रहा है। इसलिए इंटरनेट एक्सप्लोरर इत्यादि तक पूर्ण पहुंच है। सब कुछ अटैचमेंट को छोड़कर काम करता है, जैसा कि मैंने कहा है कि अंतःस्थापित हो रहा है। – CraftyFella

उत्तर

1

मुझे अतीत में ऐसी ही समस्याएं थीं, और समाधान प्रति सत्र एक ही ब्राउज़र विंडो का पुन: उपयोग करना था। जब पहली परीक्षा निष्पादित होती है और सभी परीक्षणों के लिए इसका उपयोग करती है तो ब्राउज़र विंडो बनाएं, फिर परीक्षण सत्र समाप्त होने पर वैकल्पिक रूप से इसे बंद करें। जाहिर है, यह इस बात पर निर्भर है कि आप किस टेस्ट दोहन का उपयोग कर रहे हैं, लेकिन इसे काम करना चाहिए। आईई विंडोज़ बनाना और नष्ट करना संसाधन-गहन गतिविधि है, इसलिए यदि संभव हो, तो इससे बचने के लिए सबसे अच्छा है।

+0

नमस्ते, 2 खिड़कियां जिन्हें मैं संलग्न करने की कोशिश कर रहा हूं वे पॉपअप हैं, इसलिए मैं वास्तव में एक ही विंडो का उपयोग नहीं कर सकता। यद्यपि आपके उत्तर के लिए धन्यवाद। – CraftyFella

संबंधित मुद्दे