2014-01-29 15 views
6

Wie verwenden Sie Capybara, um Elemente mit contenteditable="true" zu testen?Capybara und contenteditable

Mit dieser spec ...

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

... und die Öko-Datei ...

<td id="name" contenteditable="true"><%= @name %></td> 
<td><button id="update" class="btn btn-sm btn-default">Update</button></td> 

ich diesen Mangel spec bekommen ...

Capybara::ElementNotFound: 
    Unable to find field "name" 

Antwort

8

Hier wie ich das Problem gelöst habe.

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 

Nach this thread sieht es aus wie Sie in der Lage sein sollten, die fill_in Helfer auf contenteditable divs zu verwenden, aber ich kann mich nicht bekommen zu arbeiten.

+0

Dies scheint nicht mit Capybara 2.4.1 zu funktionieren. Wenn Sie den Text mit 'el.text' oder mit' have_content' überprüfen, wird der Originaltext angezeigt. – BM5k

+0

Ich sollte hinzufügen, dass ich Phantomjs 1.9.7 und Poltergeist 1.5.1 – BM5k

+0

In Poltergeist JS wird es sein: 'el.native.send_keys (: Enter)', nicht ': return'. – Mike

Verwandte Themen