我一直在尝试针对包含由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"
我不知道我做错了什么。
答案 0 :(得分:1)
尝试使用此
find(:xpath, '//option[contains(text(), "United States")]').select_option
find(:xpath, '//option[contains(text(), "January")]').select_option
这应该有效,因为没有不明确的下拉值。
答案 1 :(得分:0)
我的问题不是Capybara,RSpec或Poltergeist的错。在控制器类中,我从数据库动态加载一年中的几个月。这个表在我的开发数据库中播放了几个月,但不是我的测试数据库......抱歉