水豚和满足

nif*_*fty 6 contenteditable capybara

你如何使用Capybara测试元素contenteditable="true"

有了这个规范......

scenario "Using valid input" do
  fill_in "name", with: "Zinn"
  click_button "Update"
  expect(page).to have_content("Update successful!")
end
Run Code Online (Sandbox Code Playgroud)

......这个生态文件......

<td id="name" contenteditable="true"><%= @name %></td>
<td><button id="update" class="btn btn-sm btn-default">Update</button></td>
Run Code Online (Sandbox Code Playgroud)

我得到了这个失败的规范......

Capybara::ElementNotFound:
   Unable to find field "name"
Run Code Online (Sandbox Code Playgroud)

nif*_*fty 8

这是我最终解决问题的方法.

feature "Editing", js: true do

  scenario "with valid input" do
    el = find(:xpath, "//div[@contenteditable='true' and @name='name']")
    el.set("Zinn")
    el.native.send_keys(:return)
    expect(page).to have_content("Update successful!")
    expect(page).to have_content("Zinn")
  end

end
Run Code Online (Sandbox Code Playgroud)

根据这个线程,看起来你应该能够fill_in在contenteditable divs上使用帮助器,但我无法让它工作.