15

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

4

5 回答 5

6

您可以使用 selenium 的各种功能来捕获警报/确认。它们不能直接用于 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() 函数,因此它可以捕获此信息。

您可以在selenium 常见问题解答或 gem 服务器上找到更多文档

于 2009-08-18T11:00:36.510 回答
1

请参阅http://selenium-client.rubyforge.org/classes/Selenium/Client/Idiomatic.html中的方法定义

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

Then /^I should see a JS confirm dialog saying "([^\"]*)"$/ do |statement|    
  selenium.confirmation.should eql(statement)                               
end
于 2010-01-07T05:56:16.790 回答
0

您可以使用 Webrat 或 Selenium 和 Cucumber 来测试它。

我的猜测是你想要模拟浏览器或自动浏览器测试,

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

我之前使用 Selenium 和 Cucumber 对此进行了测试,但似乎找不到代码,如果我这样做了,我会编辑它。

高温高压

于 2009-08-11T08:02:33.690 回答
0

我建议使用螺丝单元来测试页面上的 javascript 行为。您还可以查看 Relevance 的 blue-ridge 插件,它结合了螺丝单元并添加了对命令行和浏览器 js 测试的支持。您可以在 github 上的相关性/blue-ridge 下找到它。(我还没有代表发布多个链接 :(

使用螺旋单元和/或蓝脊驱动黄瓜测试将是一个有趣的练习,而且可能并不难实现。

于 2009-08-11T17:22:20.483 回答
0

这个要点包含使用任何 Capybara 驱动程序在 Rails 2 和 3 中测试 JS 确认对话框的步骤,应该很容易适应警报框。

于 2011-09-27T14:47:57.370 回答