2009-08-10 196 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确认对话框,应该很容易适应警告框。