2009-08-10 194 views
15

我試圖測試JS確認對話框與黃瓜在軌道上。我有一個window.onbeforeunload事件處理程序,如果您嘗試從頁面導航時提示您確認對話框,但我不知道如何測試它,任何人都有關於如何完成此任務的想法?黃瓜+測試JS警報

回答

6

有硒的各種功能,你可以用它來捕捉警報/確認 他們不能直接獲得與webrat硒實現,但使用webrat的config.mode = :selenium他們可以如下使用時:

Then /^I should see a JS alert$/ do 
    selenium.is_alert_present.should be_true 
end 

# or 

Then /^I should see a "Are you sure?" JS confirm dialog$/ do 
    selenium.get_alert.should eql("Are you sure?") 
end 

# you can also click the OK/Cancel buttons on confirm boxes with 

selenium.chooseOkOnNextConfirmation(); 
#and 
selenium.chooseCancelOnNextConfirmation(); 

有可能沒有最大的測試,但給你一個想法。 內部硒覆蓋JS的警報()和確認()函數,以便它可以捕獲此信息。

可以在http://selenium-client.rubyforge.org/classes/Selenium/Client/Idiomatic.html

發現在selenium faq或你的寶石服務器

+0

如果你不想使用'selenium.chooseOkOnNextConfirmation()',你可以在調用'selenium.is_alert_present'後使用'selenium.get_alert'來消費警報。如果你既沒有這些東西,你的下一個硒語句也會因爲待處理的警報而失敗。 – Loktar 2011-03-31 18:24:08

0

你可以使用Webrat或Selenium和黃瓜來測試這個。

我的猜測是,你想模擬瀏覽器或自動化瀏覽器測試,

您可以在這種情況下使用Webrat或Webrat ::硒或乾脆硒與黃瓜。

我已經測試過使用硒和黃瓜之前,但似乎無法找到代碼,將編輯它,如果我這樣做。

HTH

0

我會建議使用screw-unit對頁面上的JavaScript測試行爲。您還可以看看Relevance的blue-ridge插件,它包含了螺絲單元,並增加了對命令行和瀏覽器js測試的支持。你可以在github的相關/ blue-ridge下找到它。 (我沒有代表還沒有發佈多個鏈接:(

這將是一個有趣的練習,使用螺絲單元和/或藍脊驅動黃瓜測試,並可能不那麼難拉。關

1

上查看方法定義的詳細文檔您可以在您的黃瓜步定義硒輔助對象調用它們 - 例如,

Then /^I should see a JS confirm dialog saying "([^\"]*)"$/ do |statement|  
    selenium.confirmation.should eql(statement)        
end 
0

This gist有步驟在任何Capybara驅動程序中測試Rails 2和3中的JS確認對話框,應該很容易適應警告框。