使用rspec / Capybara找到的Rails测试链接,但在点击时不生成表单

时间:2015-01-22 00:12:55

标签: javascript ruby-on-rails rspec capybara

我对此测试的意图是找到一个创建链接 - 很多人之一,因此我使用first - 然后填写一个单击该链接时使用javascript生成的表单。尽管已成功找到“创建”链接并调用“点击”,但未生成表单。

require 'spec_helper'
include Warden::Test::Helpers
Warden.test_mode!

describe "user log in" do
  it "allows an existing user to sign in" do 
    visit "/users/sign_in"

    fill_in "Login", with: "Kevin"
    fill_in "Password", with: "abcdef"

    visit "/students/2/schedule"
    first(:link, 'Create').click

    within '#session_minutes' do
     find("option[value='60']").click
    end

  end
end

这可能是javascript / rspec问题吗?在实现了phantomjs和poltergeist在无头浏览器上生成JS动作之后,我无法模拟访问Create链接所需的悬停效果,因此我不确定采用哪种测试方法来改善我的情况。

2 个答案:

答案 0 :(得分:0)

你需要使用支持javascript的驱动程序,capybara的默认驱动程序不支持。

您可以找到驱动程序here的文档。

我更喜欢恶作剧者,因为它完全无头(不需要实际的浏览器),所以可以在无头的流浪盒中运行。如果你已经安装了Firefox,Selenium几乎不需要设置。

答案 1 :(得分:0)

为了解决我的问题,我选择了使用poltergeist和phantomjs然后使用mouseover操作,如下所示

require 'spec_helper'
include Warden::Test::Helpers
Warden.test_mode!

describe "user log in" do
  it "allows an existing user to sign in" do 
    visit "/users/sign_in"

    fill_in "Login", with: "Kevin"
    fill_in "Password", with: "abcdef"

    visit "/students/2/schedule"
    first('.open').trigger('mouseover')

  end
end