2010-02-12 5 views
9

ऐसा लगता है कि मैंने जिस कोड का प्रयास किया है, उसका कोई भी प्रभाव नहीं है। मेरा इरादा किसी भी और सभी जावास्क्रिप्ट संकेतों को बंद करना है जो "ठीक" बटन पर क्लिक करके आ सकते हैं। समस्या यह है कि, मेरी स्क्रिप्ट का आने वाले संकेतों पर कोई प्रभाव नहीं पड़ता है। दूसरे शब्दों में, यह कुछ भी नहीं करता है।रूबी वाटिर: जावास्क्रिप्ट अलर्ट पर ठीक क्लिक करना?

यहाँ मैं क्या है:

fx = FireWatir::Firefox.start(somepage) 
fx.startClicker("OK") 
fx.button(:id, "OK").click 
fx.button(:id, "CONFIRM").click 

HTML:

<script type="text/javascript"> 
    alert("Alert!"); 
    window.confirm("Confirm?"); 
</script> 

संकेतों बदल सकते हैं में पाठ, मेरा इरादा ठीक क्या चेतावनी/पुष्टि शीघ्र अंदर है की परवाह किए बिना हिट करने के लिए है ।

पीएस: मैं उबंटू चला रहा हूं।

उत्तर

6

पॉप-अप को ट्रिगर करने से रोकने का सबसे अच्छा तरीका है।

require 'watir' 
b = Watir::Browser.start "http://somepagewithdialogs" 
# don't return anything for alert 
b.execute_script("window.alert = function() {}") 

# return some string for prompt to simulate user entering it 
b.execute_script("window.prompt = function() {return 'my name'}") 

# return null for prompt to simulate clicking Cancel 
b.execute_script("window.prompt = function() {return null}") 

# return true for confirm to simulate clicking OK 
b.execute_script("window.confirm = function() {return true}") 

# return false for confirm to simulate clicking Cancel 
b.execute_script("window.confirm = function() {return false}") 

# interact with some element which would trigger the pop up 
b.button(:id => "dialogTrigger").click 

देखें: http://watirmelon.com/2010/10/31/dismissing-pesky-javascript-dialogs-with-watir/ अधिक जानकारी के लिए।

0

पॉप अप मेरे लिए काले जादू हैं। क्या आपने यहां से समाधान का प्रयास किया?

मैं भी watir-general पर अपने प्रश्न पोस्ट सुझाव है।

+0

समाधान # 3 का उपयोग करके मेरे लिए Željko दूसरे लिंक में काम किया। मैंने ब्राउजर वैरिएबल पैरामीटर लेने के लिए स्टार्टक्लिकर विधि को थोड़ा सा संशोधित किया, लेकिन यह आखिरकार काम करता था। –

0

मुझे लगता है कि आपका fx.button (: id, "OK")। क्लिक प्रतीक्षा राज्य बदल गया था।
लेकिन जावास्क्रिप्ट संवाद राज्य को नहीं बदलता है।
तो आपका वॉटर हमेशा के लिए इंतजार कर रहा है।
यदि ऐसा नहीं है, तो मुझे नहीं पता।

कार्रवाई स्थिति नहीं बदलेगी, इसे कभी वापस न करें।
तो इसे क्लिक करने की आवश्यकता नहीं है।
जब मैं वॉटर (फायरवाटिर नहीं), @ ie.button (: id, 'OK') का उपयोग करता हूं। Click_no_wait।
फिर पॉपअप के लिए बेहतर 1 ~ 3 सेकंड प्रतीक्षा करें।
फिर आप चाहें।
और इसके अलावा यदि आप नियंत्रण msg-box (पॉपअप) नियंत्रण चाहते हैं, तो ऑटोिट करने की आवश्यकता है। --This इंतजार संदेश बॉक्स के लिए नमूना है और ओके क्लिक करें आईई popup-- के लिए

autoit=WIN32OLE.new('AutoItX3.Control') 
autoit.WinWait('Windows Internet Explorer') 
autoit.WinActive('Windows Internet Explorer') 
autoit.ControlClick('Windows Internet Explorer','','OK') 

ऐसा नहीं है कि पूरी तरह से मुझे समझ नहीं आता तुम क्या मतलब है संभव है। यदि ऐसा है तो इसे अनदेखा करें।

0

/var/lib/gems/1.8/gems/firewatir-1.6.5/unittests/html/JavascriptClick.html (मान लीजिए कि आपका फायरवाटिर मणि इंस्टॉल है) देखें। मैंने परीक्षण चलाया और यह मेरे लिए काम किया। शायद टेस्ट पढ़ने से आपको कुछ अंतर्दृष्टि मिल जाएगी कि स्टार्टक्लिकर को कैसे काम करना है।

0

इस लिए कहा गया था एक अनंत काल पहले तो मैं सिर्फ इतना है कि इसके लिए मुझे

किया कुछ और भी अधिक जानकारी वाल जोड़ रहा @browser.alert.exists? @browser.alert.ok @browser.alert.close

पहले एक एक बूलियन दूसरा एक वापस आ जाएगी ठीक होगा करने के लिए आपको जो भी कार्रवाई कहा जाता है और तीसरा कोई चेतावनी बंद नहीं करेगा

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