2009-05-19 6 views
15

वॉटर का उपयोग करके संवाद की पुष्टि करें, मैं एक पुष्टिकरण संवाद बॉक्स को संभालने की कोशिश कर रहा हूं और "ठीक" दबाकर वॉर्न को बताने की कोशिश कर रहा हूं। यह इंटरनेट पर अच्छी तरह से प्रलेखित है - आप ConfirmDialogHandler और UseDialogOnce विधि का उपयोग करते हैं .. सिवाय इसके कि यह मेरे लिए काम नहीं कर रहा है।वॉटर - हैंडलिंग ConfirmDialogHandler

WatiN.Core.Exceptions.WatiNException: Dialog not available within 5 seconds

मैं Watin 2.0 बीटा एटीएम का उपयोग कर रहा है, लेकिन मैं पहले से है जो एक ही मुद्दा था 1.x के पिछले संस्करण का उपयोग कर रहा था: मैं निम्नलिखित त्रुटि मिलती है।

 using (IE ie = new IE("http://localhost/TestApp/TestConfirmPage.asp")) 
     { 
      var approveConfirmDialog = new ConfirmDialogHandler(); 

      using (new UseDialogOnce(ie.DialogWatcher, approveConfirmDialog)) 
      { 
       ie.Button(Find.ByName("btn")).ClickNoWait(); 
       approveConfirmDialog.WaitUntilExists(5); 
       approveConfirmDialog.OKButton.Click(); 
      } 
      ie.WaitForComplete(); 
     } 

एएसपी पेज बहुत ही सरल है, यह एक बटन के होते है कि बलों: चल रहे सहयोगियों मशीन 64 बिट विस्टा पर परीक्षण किया गया है, मैं 64 बिट विंडोज 7

कोड इस तरह दिखता है चल रहा हूँ एक की पुष्टि कर देते हैं:

<input type="button" name="btn" id="btn" value="Click me" onclick="ConfirmApp()" /> 

और ConfirmApp परीक्षण के लिए नीचे छीन लिया गया है, ताकि अब यह सब होता है:

bOK = confirm("You clicked a popup. Did you mean to?"); 
return bOK; 
+0

संबंधित: http://stackoverflow.com/questions/5626538/watin-ie9-cant-click-ok-buttons/9769242#9769242 –

उत्तर

11

कोड मुझे ठीक लग रहा है, और मुझे लगता है कि यह काम करना चाहिए। एकमात्र विचार मैंने अलग-अलग किया था, डायलॉग ब्लॉक का उपयोग करके अंदर पूर्ण प्रतीक्षा करना था। पता नहीं क्यों, लेकिन मैंने ऐसा करने से पहले मुझे कुछ समस्याएं भी मिलीं, कभी-कभी यह कभी-कभी काम करती है। और मैं अस्तित्व तक प्रतीक्षा समय पर समय सीमा का उपयोग नहीं करता। लेकिन आप शायद पहले से ही एक कोशिश की है।

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

using (new UseDialogOnce(ie.DialogWatcher, approveConfirmDialog)) 
     { 
      ie.Button(Find.ByName("btn")).ClickNoWait(); 
      approveConfirmDialog.WaitUntilExists(); 
      approveConfirmDialog.OKButton.Click(); 
      ie.WaitForComplete(); 
     } 
+0

एक संयोजन का उपयोग करना इस तरह के कोड परिवर्तन और डीएलएल के एक ताज़ा करने के क्रम में इसे हल किया। –

1

मैं एक ही मुद्दा है और कोई बात नहीं मैं जब तक मैं एक समाधान है जो समय लगेगा लेकिन मेरे लिए काम मिल गया यह काम नहीं कर रहा था कि क्या करना का सामना करना पड़ रहा था।

WaitUntilExists()के लिए समाप्त होने का डिफ़ॉल्ट समय 30 सेकंड है, इसलिए IE9 में इसका उपयोग करते समय विस्तारित समय सीमा प्रदान करें।

handler.WaitUntilExists(40); // or whatever time suits you above 30

यह निश्चित रूप से समय लेने के लिए है, लेकिन यह काम करता है।

2

मुझे एक ही समस्या थी और मैंने कई चीजों की कोशिश की लेकिन केवल एक भाग को अनदेखा कर दिया जिसे मैं बुला रहा था। क्लिक करें() और फिर इसे बदल दिया। CLickNoWait() और चीजों को क्रमबद्ध किया गया। उम्मीद है कि यह

0

डायलॉग वॉचर समाधान पर विविधता के साथ बस कुछ घंटों बिताए। आईई 9 में मेरे लिए कुछ भी काम नहीं किया।

मैं एक-लाइनर के साथ समाप्त हुआ जो मेरे लिए काम करता है, उम्मीद है कि यह किसी और की मदद करेगा! यह दृष्टिकोण पूरी तरह से उपयोगकर्ता कुंजी प्रेस का उपयोग करके संवाद से निपटने का प्रयास करने से बचाता है।

  • ठीक है। बटन ClickNoWait तक जाने वाले सभी चरणों को करें, फिर:

SendKeys.SendWait ("{ENTER}");

  • कैंसल के लिए। तत्व ClickNoWait तक जाने वाले सभी चरणों को करें, फिर: SendKeys.SendWait ("{TAB}"); SendKeys।SendWait ("{ENTER}");

nb: का उपयोग कर System.Windows.Forms