我正在使用奇妙的nested_form gem 来处理我的嵌套属性,它工作得很好。
当我尝试使用 Capybara/rspec 和 Poltergeist 作为驱动程序在我的嵌套表单的选择字段上运行一些集成测试时,就会出现我的问题。
我的测试如下。
click_on "Add Field"
find('input:last').set "Employee Code"
find('select:last').select "Word"
我在 rspec 中收到以下错误
Failure/Error: find('select:last').select "Word"
Capybara::Poltergeist::ObsoleteNode:
Capybara::Poltergeist::ObsoleteNode
当我在尝试查找“select:last”之前打印 html 内容时,我能够看到正确的 html。贴在下面。
<input class="string required" id="source_model_attributes_attributes_1355377152026_field_name" label="Field Name" name="source[model_attributes_attributes][1355377152026][field_name]" placeholder="Field Name" size="50" type="text">
<select class="select required" id="source_model_attributes_attributes_1355377152026_field_type" label="Field Type" name="source[model_attributes_attributes][1355377152026][field_type]" prompt="Select Field Type">
<option value="">Select Field Type</option>
<option value="Word">Word</option>
<option value="Number">Number</option>
<option value="True or False">True or False</option>
<option value="Date & Time">Date & Time</option>
<option value="Date">Date</option>
<option value="Time">Time</option></select>
我使用的是 find,而不是 fill_in,因为我的 html 是动态生成的,时间戳附加到 id 和 name 字段。
值得一提的是,我尝试像这样使用 Capybara 的 select Action 时运气不佳。
select "Word", from: "Field Type"
失败并出现以下错误。
Failure/Error: select "Word", from: "Field Type"
Capybara::ElementNotFound:
cannot select option, no select box with id, name, or label 'Field Type' found
Capybara 出于某种原因无法找到标签,可能是因为它隐藏在实际形式中。