我有一个collection_select
和text_field_tag
,像这样:
<%= form_tag method_path(@test.id), method: :get do %>
<%= collection_select(:test, :id, Test.all, :id, :id, prompt: true, include_blank: 'Select Test') %>
<%= text_field_tag(:input_test_questions, 'Test ids') %>
<%= submit_tag "Add" %>
<% end %>
这将生成以下html:
<select name="test[id]" id="test_id"><option value="">Select Test</option>
<option value="1">1</option>
<option value="2">2</option>
</select>
<input type="text" name="input_test_questions" id="input_test_questions" value="Test ids">
<input type="submit" name="commit" value="Add">
我正在尝试使用Capybara
进行上述集成测试。为了选择和输入,我这样写:
select "2", from: "#test_id"
fill_in "input_test_questions", with: "1"
但是我遇到以下错误:
Capybara::ElementNotFound: Unable to find css "#test_id"
Capybara::ElementNotFound: Unable to find field "input_test_questions" that is not disabled
如何纠正错误,以便Capybara
找到并选择并填写上述选项?
答案 0 :(得分:1)
select的from
选项用于通过其名称,id,test_id属性或标签文本来定位
select "2", from: "test_id" # find by id
select "2", from: "test[id]" # find by name
fill_in "input_test_questions", with: "1"
应该按照显示的HTML编写,除非您的JS / CSS行为隐藏了页面上的文本输入。如果您将其隐藏,则Capybara无法填充它,因为用户将无法填充。
注意:除非您使用的是Capybara的较旧版本,否则您显示的Capybara::ElementNotFound: Unable to find css "#test_id"
错误消息实际上不可能来自您显示的代码。希望那只是您其他尝试的不正确复制/粘贴。