2012-07-25 34 views
1

我剛開始學的Watir ......我堅持這一點:的Watir和javascript彈出窗口

我儘量讓的Watir點擊(和閱讀內容)這個JavaScript彈出窗口的:

http://www.w3schools.com/js/tryit.asp?filename=tryjs_alert

我的Watir代碼如下所示:

require 'watir' 
b = Watir::Browser.start "www.w3schools.com/js/tryit.asp?filename=tryjs_alert" 
b.maximize 
b.frame(:name, "view").button(:text, "Show alert box").click 
b.javascript_dialog.button('OK').click 

..但它不工作,在彈出的窗口中,的Watir不點擊 「確定」 按鈕。我知道Watir-Webdriver可以處理彈出窗口(「browser.alert.ok」),但是可以使用「經典的」僅限IE的Watir做到這一點(沒有任何複雜的黑客攻擊,使用AutoIt/Sikuli等)?

編輯:我能與這條線完全去除彈出窗口:

b.frame(:name, "view").execute_script("window.alert = function() {}") 
聊勝於無

,現在測試不會掛彈出窗口,但我現在還不能確認/讀取彈出窗戶...

回答

0

它看起來像Watir點擊按鈕打開JavaScript對話框後,它正在等待它永遠不會得到的東西。

解決方法是單擊帶有click_no_wait的按鈕。試試這個:

require 'watir' 
b = Watir::Browser.start "www.w3schools.com/js/tryit.asp?filename=tryjs_alert" 
b.maximize 
b.frame(:name, "view").button(:text, "Show alert box").click_no_wait 
b.javascript_dialog.button('OK').click 

更新:只注意到這個記錄上的Watir維基 - http://wiki.openqa.org/display/WTR/JavaScript+Pop+Ups(見示例)。

+0

是的,這可能是解決方案......只有一個「小」問題:使用「click_no_wait」徹底崩潰Ruby,Windows關閉它,並想向微軟發送錯誤報告......(我使用XP SP3, Ruby 1.9.3p194,Watir 3.0.0。) – apk 2012-07-25 14:22:05

+0

我使用的是Win7,Ruby 1.8.7,Watir 3.0.0。 – 2012-07-25 14:28:01

+0

將Ruby降級到1.9.2後,它不再在「click_no_wait」上崩潰。但是,Watir仍然拒絕點擊彈出窗口。 – apk 2012-07-25 15:18:47