日期:2014-05-16  浏览次数:20339 次

让Cucumber测试包含Javascript的场景

?

初学ROR就像Terra Nova中人类回到了史前新世界一样, Ruby和Rails分别给了我很多惊喜.

?

在RecruitingOnRails Beach项目中也遇到了一些问题, 其中一个对我们BDD阻碍比较大的问题是Cucumber在默认情况下无法运行Javascript, 而我们正好需要通过使用javascript实现在一个表单中点击不同按钮需要将请求Post或Get到特定地址. ?我们通过如下几步来使Cucumber支持Javascript

?

1. 首先下载ChromeDriver在http://code.google.com/p/chromedriver/downloads/list

?

2. 在解压缩之后尝试直接运行, 你应该看到类似这样的提示:

Started ChromeDriver

port=9515

version=19.0.1068.0

og=/Users/twer/chromedriver.log

?

3. 按Control+C停止服务, 并且将这个文件拷贝到/usr/local/bin/(需要su or 在cp命令前加sudo)

?

系统环境准备到此结束, 接着我们需要修改rails项目中的一些文件

?

4. 打开features/support/env.rb

在任意位置加入:

?

Capybara.register_driver :chrome do |app|

? Capybara::Selenium::Driver.new(app, :browser => :chrome)

end

?

Capybara.javascript_driver = :chrome

?

5. 在你希望运行js的Scenario上注解@javascript

?

其他的一些注意事项:

?

1. 如果存在confirm弹出窗, 请使用

page.driver.browser.switch_to.alert.accept 相当于点击ok

page.driver.browser.switch_to.alert.dismiss 相当于点击no

?

2. 经过我尝试,文件下载测试可能无法找到正确的输出~

?