Capybara Conundrum,现场无法找到

时间:2014-04-14 01:55:16

标签: ruby-on-rails capybara

我对我从功能规范中收到的有关丢失的水豚元素的错误消息感到困惑。

我的new.html.erb中有一个简单的表单,如下所示:

<h1>Register a Building</h1>
<h4 class="notice"></h4>
<%= simple_form_for @building do |f| %>
  <%= f.input :street_address %>
  <%= f.input :city %>
  <%= f.input :state, collection: Building::STATES %>
  <%= f.input :postal_code %>
  <%= f.input :description %>
  <%= f.button :submit %>
<% end %>

我的feature_spec正在测试新建筑的注册,其中包含如下所示的必填字段:

scenario 'I want to submit a valid building to record' do
building_count = Building.count
visit new_building_path
fill_in 'Street address', with: '5555 Summer Drive'
fill_in 'City', with: 'Boston'
fill_in ' State', with: 'WA'
fill_in 'Postal code', with: '78526'
fill_in 'Description', with: ''
click_on 'Create Building'
expect(page).to have_content('Building Submitted')
expect(page).to have_content('')
expect(Building.count).to eql(building_count + 1)

一切都很好,直到它到达州领域。我一直收到一个未找到元素的错误,但是当我进行保存并打开页面时,它很明显。

这是我的错误:

 Failure/Error: fill_in 'State', with: 'WA'
 Capybara::ElementNotFound:
   Unable to find field "State"

我注意到错误消息中的双/单引号但是当我匹配引号并更改它们时没有任何反应。此外,我已经检查了我的元素,我得到的标题是这个&#34;国家&#34 ;.我改变了我的测试以寻找&#34;国家&#34;不是&#34;州&#34;但仍无济于事。我该怎么做才能解决或解决这个问题?

1 个答案:

答案 0 :(得分:1)

您的State字段是一个选择框,而不是文本字段。

使用:

select 'WA', from: 'State'

fill_in专门将字段视为可填写的,即文本字段和文本区域。

Capybara关于此的说明就在这里:http://rubydoc.info/github/jnicklas/capybara/master/Capybara/Node/Actions