Capybara不使用x-editable表单

时间:2015-03-13 00:26:19

标签: ruby-on-rails twitter-bootstrap cucumber capybara poltergeist

我尝试使用capybara和poltergeist,在Rails 4,Bootstrap 3和Boostrap-editable-rails 0.0.7上测试我的内联可编辑元素,并按照the x-editable docs中的示例进行操作。 Capybara似乎点击元素,但他们转换为表单元素永远不会发生。在开发模式下通过UI时,它工作正常。

<a class="edit_form" id="edit-note-category-<%= jira.id %>" href="#" data-type="select" 
    data-source="<%=@note_categories%>" data-value="<%=note.note_category.try(:id) %>" 
    data-resource="note" data-name="note_category_id" data-pk="<%=note.id%>" 
    data-url="/correct/path">
</a>

# CUCUMBER STEP DEFINITIONS
When(/^I click the element for the (.*?)$/) do |element|  
    element = element.downcase.gsub(' ', '-')  
    elem_id = "#edit-#{element}-#{@jira.id}"  
    find(elem_id).trigger('click')  
end

When(/^I change the note's category to "(.*?)"$/) do |category_name|
    select category_name
end

尝试选择类别名称时,对此测试失败并出现ElementNotFound异常。在开发模式下的html显示在单击元素后创建选择,但是在相同操作之后的屏幕截图中间显示没有这样的选择元素。

1 个答案:

答案 0 :(得分:0)

我知道你提出这个问题需要很长时间,但在遇到可能同样的问题时我偶然发现了这个问题。我在更新字段时设置了X-Editable来发出PATCH请求。这在生产/开发中运行良好,但是当我们想要为它添加功能规格时,我们遇到了困难。我使用硒驱动器进行了测试,它也起作用了。问题显然是使用了Poltergeist。

事实证明,PhantomJS(Poltergeist的底层引擎)目前存在一个错误,即发出PATCH请求(https://github.com/ariya/phantomjs/issues/11384)。虽然拥有更多语义会很好,但我的解决方案是将请求更改为PUT。

这样的事情:

function enableInlineEditable() {
  $('.inline-editable').editable({
    ajaxOptions: { type: 'PUT' },
  });
}