2009-12-30 16 views
6

WatiN में मैं बैकबैक पूरा होने तक कैसे प्रतीक्षा कर सकता हूं।WatiN में पोस्टबैक पूरा होने तक प्रतीक्षा कैसे करें

उदाहरण के लिए:

// Postback response modifies update panel elsewhere on page 
browser.Text("id").TypeText("asd"); 

// WatiN doesn't wait until postback is completed (what code should I replace it with?). 
browser.WaitUntilComplete(); 

उत्तर

6

WaitUntilComplete AJAX कॉल को पहचान नहीं पाता है। कैसे है कि रूप में अच्छी तरह काम करने के लिए कुछ कोड इंजेक्षन करने के लिए पर इस लेख (WaitForAsyncPostBackToComplete पर खोज) देखें: WatiN, Ajax and some Extension Methods

HTH, जेरोन

+0

धन्यवाद। यह वही है जो मैंने बाद में पाया। यह अजीब बात है कि –

11

अगर आईई बजाय व्यस्त पूर्ण होने पर आपको जांच कर सकता है।

while (((SHDocVw.InternetExplorerClass)(_ie.InternetExplorer)).Busy) 
     { 
      System.Threading.Thread.Sleep(2000); 
     } 
+0

ऐसा नहीं है कि मैं सही रूप में दो जवाब चिह्नित नहीं कर सकते दुख की बात है, लेकिन मैं भविष्य में उपयोग के रूप में अच्छी तरह से अपने चाल को ध्यान में रखना होगा –

+1

+1 मैं थोड़ा सा संदेह था, लेकिन यह अजाक्स के साथ बेकार ढंग से काम करता है! इस टिप के लिए धन्यवाद! :-) –

1

जैसा कि बताया जा WaitForComplete एक पृष्ठ लोड के लिए ठीक है, लेकिन के लिए काम नहीं करता है अजाक्स कॉल

यहां एक बहुत ही सरल समाधान है जो मेरी स्थिति के लिए अच्छी तरह से काम करता है जहां मैं एक विशिष्ट तत्व प्रकट होने की अपेक्षा करता हूं ... शायद ... अंततः। यह बस लूप जब तक elementID एक पृष्ठ पर बार मौजूद है, या बाहर 20 सेकंड के बाद:

DateTime _startWait = DateTime.Now; 
while (_startWait.AddMilliseconds(20000) > DateTime.Now && !WatiNbrowser.Elements.Exists(elementID)) 
        { 
         System.Threading.Thread.Sleep(200); 
         Application.DoEvents(); 
        } 
+0

खोजने के पहले 3 दिनों में मैं इस लेख के आसपास कैसे नहीं आया था क्योंकि आप एसटीए थ्रेड में हैं क्योंकि आप 'एप्लिकेशन.डॉवेंट्स() 'क्यों कॉल कर रहे हैं? – Odys

+0

दरअसल वह अनावश्यक है। यह पहले से कुछ पुराना कोड था जब मैंने पहली बार सी # शुरू किया और बेहतर नहीं पता था। –

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