2012-02-19 13 views
14

onaylamak görevden uzaklaştırdıktan sonra:Modal iletişim mevcut (Selenyum :: WebDriver :: Hata :: UnhandledAlertError) Böyle bir şey ile bir sayfa var açılır

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

ben sayfasına gidin ve bağlantıyı tıklayın:

açılır pop-up onay kutusu belirir.

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

ama bu hata mesajı alıyorum: Ben bu konuda da iptal edebilirsiniz

[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>' 

yanlış yapıyorum?

Çevre:

  • Mac OS X 10.7.3
  • Firefox 10.0.2
  • Yakut 1.9.3p125
  • selenyum-webdriver 2.19.0
  • watir-webdriver 0.5.3

cevap

4

ben izah Bu cevap https://stackoverflow.com/a/8172888/409820 için sevk browser.confirm gibi yöntemleri kullanma hakkında. Örnekler testlerden doğruca geldikleri için biraz kafa karıştırıcıdır ve eğer test sayfasında birden fazla düğme olduğunu ve onaylama diyaloğuna sebep olan bağlamı anlamıyorsanız, 'onaylama' değeri vardır. Daha sonra, yöntemle sarılmış olan 'iç' komut pek bir anlam ifade etmemektedir.

Onaylama yöntemini izleyen döngüdeki (veya bloktaki) komutlar, açılır pencerenin ortaya çıkmasına neden olan komuttur.

Dolayısıyla bu yöntemleri nasıl kullanılacağına ilişkin daha iyi bir örnektir "

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

veya başka bir deyişle

alert_message_text = browser.confirm(true) {#code that causes confirm popup} 

bu .confirm(response) {block} kullanarak çalışır yolu gibi bir şey çok watir anlatmaya gibidir olurdu Tamam, blokta size verdiğim komutu onaylama iletişim kutusunun görüntülenmesine neden olacak ve ne zaman geldiğimi belirtmek istiyorum response "

Yanlış gittiğiniz yer, blok içindeki komuttur, 'browser.button.click' veya bloğun içinde benzer bir şey taşımanız gerekir. Kodunuz sonra seni sağlanan HTML değer özelliğinin dayalı düğmeye tanımlayan biraz daha spesifik olmak için bir tıklama işlemini değişti bu

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

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

gibi bir şey bakarak sona ereceğini. Sayfadaki ilk düğmenin her zaman olacağından eminseniz, son satırı

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

Teşekkürler. Austin'de seni bekleyen bir bira var. :) Komik şey, ben 'browser.confirm (true) {browser.button.click} 'kullandığımda görünen pop-up görünmüyor olmasıdır. Ben browser.execute_script ("window." Gibi, window.confirm' JavaScript işlevini geçersiz kılar.teyit = function() {return true} ")' –

+0

Ancak, kodunuz görünmesi gereken tıklamayı çalıştırıyor olabilir, bu yüzden orada ne olduğundan emin olmayın.Ben bira alacağım. Eğer yukarıdaki bilgileri almak için zaman bulursanız, ve diğer kullanıcılara ulaşmak için watir wiki ya da başka bir yerde bulmak için zaman bulursanız. –

+0

Plan tüm kitap içine koymak, ama sadece bugüne kadar zaman yoktu, çarşıdan önceki kitapta olmalı. –

İlgili konular