Capybara选择选项,来自:下拉列表

时间:2015-04-07 17:31:59

标签: rspec capybara rspec-rails poltergeist

我一直在尝试针对包含由country_select gem填充的选择框的简单页面创建一个capybara测试用例。在我的测试用例中,我有一个场景,我尝试从选择框中选择一个国家和一个月的生日,如下所示:

feature "registering for a new account" do

  Capybara.javascript_driver = :poltergeist

  scenario "a new user registers with a complete profile", :js => true do
    page.visit '/users/sign_up'
    select "United States", from: 'user[country]'
    select 'January', from: 'birthMonth'

    click 'sign up'

    expect(response.code).to eq '200'
  end

end

Capybara或Poltergeist看不到除我默认选择的选项之外的任何选项。有一次,我使用断言来查看我能找到的选项

assert_selector(:css, 'option', minimum: 20) # countries + months should be way more than 20

我收到了以下回复:

Failure/Error: assert_selector(:css, 'option', minimum: 20)
     Capybara::ExpectationNotMet:
       expected to find css "option" at least 20 times, found 2 matches: "country", "month"

我不知道我做错了什么。

2 个答案:

答案 0 :(得分:1)

尝试使用此

find(:xpath, '//option[contains(text(), "United States")]').select_option
find(:xpath, '//option[contains(text(), "January")]').select_option

这应该有效,因为没有不明确的下拉值。

答案 1 :(得分:0)

我的问题不是Capybara,RSpec或Poltergeist的错。在控制器类中,我从数据库动态加载一年中的几个月。这个表在我的开发数据库中播放了几个月,但不是我的测试数据库......抱歉