2012-02-19 8 views
14

के बाद मैं कुछ इस तरह के साथ एक पृष्ठ है:मॉडल संवाद वर्तमान (सेलेनियम :: WebDriver :: त्रुटि :: UnhandledAlertError) को आउट की पुष्टि पॉपअप

<input type="button" onclick="confirm('confirm popup');" value="click" /> 

जब मैं पृष्ठ पर जाएं और लिंक पर क्लिक करें:

require "watir-webdriver" 
browser = Watir::Browser.new 
browser.goto "page.html" 
browser.button.click 

पॉपअप की पुष्टि करता है। मैं इस के साथ इसे खारिज कर सकते हैं:

require "watir-webdriver/extensions/alerts" 
browser.confirm(true) {browser.button(:value => 'Confirm').click} 

लेकिन मैं इस त्रुटि संदेश मिलता है:

[remote server] file:///var/folders/yx/bz_81fc143b4r9pyhks300m00000gn/T/webdriver-profile20120218-1562-7b7q8d/extensions/[email protected]/components/command_processor.js:10302:in `unknown': Modal dialog present (Selenium::WebDriver::Error::UnhandledAlertError) 
    from [remote server] file:///var/folders/yx/bz_81fc143b4r9pyhks300m00000gn/T/webdriver-profile20120218-1562-7b7q8d/extensions/[email protected]/components/driver-component.js -> file:///var/folders/yx/bz_81fc143b4r9pyhks300m00000gn/T/webdriver-profile20120218-1562-7b7q8d/extensions/[email protected]/components/dispatcher.js:85:in `unknown' 
    from [remote server] file:///var/folders/yx/bz_81fc143b4r9pyhks300m00000gn/T/webdriver-profile20120218-1562-7b7q8d/extensions/[email protected]/components/driver-component.js -> file:///var/folders/yx/bz_81fc143b4r9pyhks300m00000gn/T/webdriver-profile20120218-1562-7b7q8d/extensions/[email protected]/components/dispatcher.js:516:in `unknown' 
    from [remote server] file:///var/folders/yx/bz_81fc143b4r9pyhks300m00000gn/T/webdriver-profile20120218-1562-7b7q8d/extensions/[email protected]/components/driver-component.js -> file:///var/folders/yx/bz_81fc143b4r9pyhks300m00000gn/T/webdriver-profile20120218-1562-7b7q8d/extensions/[email protected]/components/dispatcher.js:351:in `unknown' 
    from [remote server] file:///var/folders/yx/bz_81fc143b4r9pyhks300m00000gn/T/webdriver-profile20120218-1562-7b7q8d/extensions/[email protected]/components/driver-component.js -> file:///var/folders/yx/bz_81fc143b4r9pyhks300m00000gn/T/webdriver-profile20120218-1562-7b7q8d/extensions/[email protected]/components/webdriverserver.js:47:in `unknown' 
    from [remote server] file:///var/folders/yx/bz_81fc143b4r9pyhks300m00000gn/T/webdriver-profile20120218-1562-7b7q8d/extensions/[email protected]/components/httpd.js:1935:in `unknown' 
    from [remote server] file:///var/folders/yx/bz_81fc143b4r9pyhks300m00000gn/T/webdriver-profile20120218-1562-7b7q8d/extensions/[email protected]/components/httpd.js:2261:in `unknown' 
    from [remote server] file:///var/folders/yx/bz_81fc143b4r9pyhks300m00000gn/T/webdriver-profile20120218-1562-7b7q8d/extensions/[email protected]/components/httpd.js:1168:in `unknown' 
    from [remote server] file:///var/folders/yx/bz_81fc143b4r9pyhks300m00000gn/T/webdriver-profile20120218-1562-7b7q8d/extensions/[email protected]/components/httpd.js:1616:in `unknown' 
    from [remote server] file:///var/folders/yx/bz_81fc143b4r9pyhks300m00000gn/T/webdriver-profile20120218-1562-7b7q8d/extensions/[email protected]/components/httpd.js:1464:in `unknown' 
    from [remote server] file:///var/folders/yx/bz_81fc143b4r9pyhks300m00000gn/T/webdriver-profile20120218-1562-7b7q8d/extensions/[email protected]/components/httpd.js:1333:in `unknown' 
    from /Users/zeljko/.rvm/gems/ruby-1.9.3-p125/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/response.rb:52:in `assert_ok' 
    from /Users/zeljko/.rvm/gems/ruby-1.9.3-p125/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/response.rb:15:in `initialize' 
    from /Users/zeljko/.rvm/gems/ruby-1.9.3-p125/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/http/common.rb:59:in `new' 
    from /Users/zeljko/.rvm/gems/ruby-1.9.3-p125/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/http/common.rb:59:in `create_response' 
    from /Users/zeljko/.rvm/gems/ruby-1.9.3-p125/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/http/default.rb:64:in `request' 
    from /Users/zeljko/.rvm/gems/ruby-1.9.3-p125/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/http/common.rb:40:in `call' 
    from /Users/zeljko/.rvm/gems/ruby-1.9.3-p125/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/bridge.rb:590:in `raw_execute' 
    from /Users/zeljko/.rvm/gems/ruby-1.9.3-p125/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/bridge.rb:568:in `execute' 
    from /Users/zeljko/.rvm/gems/ruby-1.9.3-p125/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/bridge.rb:314:in `executeScript' 
    from /Users/zeljko/.rvm/gems/ruby-1.9.3-p125/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/common/driver.rb:209:in `execute_script' 
    from /Users/zeljko/.rvm/gems/ruby-1.9.3-p125/gems/watir-webdriver-0.5.3/lib/watir-webdriver/browser.rb:129:in `execute_script' 
    from /Users/zeljko/.rvm/gems/ruby-1.9.3-p125/gems/watir-webdriver-0.5.3/lib/watir-webdriver/extensions/alerts.rb:39:in `confirm' 
    from popup.rb:7:in `<main>' 

क्या मैं गलत कर रहा हूँ?

पर्यावरण:

  • मैक ओएस एक्स 10.7.3
  • फ़ायरफ़ॉक्स 10.0.2
  • रूबी 1.9.3p125
  • सेलेनियम-webdriver 2.19.0
  • watir-webdriver 0.5.3

उत्तर

4

मैं आपको इस उत्तर https://stackoverflow.com/a/8172888/409820 पर संदर्भित करूंगा जहां मैंने समझाया browser.confirm जैसे तरीकों का उपयोग करने के बारे में। जिनके उदाहरण सीधे परीक्षण से आते हैं, और यदि आप इस संदर्भ को समझ नहीं पाते हैं कि परीक्षण पृष्ठ पर कई बटन थे, और जो एक पुष्टिकरण संवाद का कारण बनता है, तो 'पुष्टि' का मूल्य होता है तो विधि द्वारा लिपटे 'आंतरिक' कमांड बहुत समझ में नहीं आता है।

पुष्टि विधि के बाद लूप (या ब्लॉक) में आदेश वह आदेश है जो पॉपअप होने का कारण बनता है।

इसलिए कैसे उन तरीकों का उपयोग करने का एक बेहतर उदाहरण हो गया होता

alert_message_text = browser.confirm(true) do 
    #watir code that causes confirm popup goes here 
end 

या

alert_message_text = browser.confirm(true) {#code that causes confirm popup} 
दूसरे शब्दों में

तरीका यह .confirm(response) {block} का उपयोग कर काम करता है की तरह कुछ watir कह की तरह एक बहुत कुछ है " ठीक है, मैं आपको ब्लॉक में जो आदेश दे रहा हूं, वह एक पुष्टिकरण संवाद दिखाई देगा, और जब मैं चाहता हूं कि आप response "

द्वारा निर्दिष्ट कार्रवाई करें

तो जहां आप गलत हो रहे हैं, ब्लॉक के अंदर कमांड है, आपको 'browser.button.click' या ब्लॉक के अंदर समान कुछ स्थानांतरित करने की आवश्यकता है। आपका कोड तो यह

require "watir-webdriver" 
require "watir-webdriver/extensions/alerts" 

browser = Watir::Browser.new 
browser.goto "page.html" 
browser.confirm(true) {browser.button(:value => 'click').click} 

की तरह कुछ के लिए देख रहा आपके क्लिक कार्रवाई बदल थोड़ा अधिक विशिष्ट होना, एचटीएमएल आपके द्वारा दी गई में मूल्य विशेषता के आधार पर बटन की पहचान खत्म हो जाएगा। यदि आप सुनिश्चित थे कि यह हमेशा पृष्ठ पर पहला बटन होगा, तो आप अंतिम पंक्ति को

browser.confirm(true) {browser.button.click} 
+1

धन्यवाद चक में बदल सकते हैं। ऑस्टिन में आपके लिए एक बियर इंतज़ार कर रही है। :) मजाकिया बात यह है कि जब मैं 'browser.confirm (true) {browser.button.click} 'का उपयोग करता हूं तो मुझे पॉपअप दिखाई नहीं देता है। मुझे लगता है कि यह 'window.confirm' जावास्क्रिप्ट फ़ंक्शन को ओवरराइड करता है, जो 'browser.execute_script (" विंडो के समान है।पुष्टि = फ़ंक्शन() {वापसी सही} ") –

+0

हो सकता है, हालांकि आपका कोड उस क्लिक को निष्पादित कर रहा था जिसे इसे प्रदर्शित करना चाहिए था, इसलिए सुनिश्चित नहीं है कि वहां क्या हो रहा है। मैं आपको बीयर पर ले जाऊंगा। यदि आप उपरोक्त जानकारी प्राप्त करने के लिए समय निकालते हैं और अन्य लिंक में उत्तर प्राप्त करने के लिए वॉटर विकी या किसी स्थान पर हमारे उपयोगकर्ताओं को ढूंढना आसान होता है। –

+0

योजना सभी को पुस्तक में रखना है, लेकिन मैं बस अब तक समय नहीं था। बाजार से पहले किताब में होना चाहिए। –

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