Ruby on rails 黄瓜+;测试JS警报

Ruby on rails 黄瓜+;测试JS警报,ruby-on-rails,cucumber,Ruby On Rails,Cucumber,我试图在Rails上测试一个带有Cucumber的JS确认对话框。我有一个window.onbeforeunload事件处理程序,如果您试图离开页面,它会提示您确认对话框,但我不知道如何测试它,有人知道如何做到这一点吗?您可以使用Webrat或Selenium和Cucumber来测试这一点 我猜你需要模拟浏览器或自动浏览器测试 在这种情况下,您可以使用Webrat或Webrat::Selenium,也可以将Selenium与Cucumber一起使用 我以前用Selenium和Cucumber测试

我试图在Rails上测试一个带有Cucumber的JS确认对话框。我有一个window.onbeforeunload事件处理程序,如果您试图离开页面,它会提示您确认对话框,但我不知道如何测试它,有人知道如何做到这一点吗?

您可以使用Webrat或Selenium和Cucumber来测试这一点

我猜你需要模拟浏览器或自动浏览器测试

在这种情况下,您可以使用Webrat或Webrat::Selenium,也可以将Selenium与Cucumber一起使用

我以前用Selenium和Cucumber测试过,但似乎找不到代码,如果我找到了,我会编辑帖子

HTH

我建议使用测试页面上的javascript行为。您还可以看看Relevant的blue ridge插件,它包含了螺旋单元,并增加了对命令行和浏览器js测试的支持。你可以在github上的关联/蓝岭下找到它。(我还没有让代表发布多个链接:(


使用螺旋装置和/或blue ridge进行cucumber测试将是一个有趣的练习,而且可能没有那么难完成。

硒的多种功能可用于捕获警报/确认。 它们不能直接用于webrat selenium实现,但在使用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();
可能没有最伟大的测试,但会给你一个想法。 selenium在内部重写JS的alert()和confirm()函数,以便它能够捕获这些信息


您可以在或gem服务器上找到更多文档

请参阅中的方法定义

您可以在Cucumber步骤定义中使用selenium helper对象调用它们,例如


在Rails 2和3中使用任何水豚驱动程序测试JS确认对话框的步骤,应该很容易适应警报框。

如果不想使用selenium,请选择OkonnextConfirmation()您可以使用
selenium.get\u alert
在调用
selenium.is\u alert\u present
后使用该警报。如果您同时执行这两项操作,则下一个selenium语句将因挂起的警报而失败。
Then /^I should see a JS confirm dialog saying "([^\"]*)"$/ do |statement|    
  selenium.confirmation.should eql(statement)                               
end