我尝试使用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显示在单击元素后创建选择,但是在相同操作之后的屏幕截图中间显示没有这样的选择元素。
答案 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' },
});
}