我想使用RSpec和Capybara模拟图像点击,但是我无法做到。
我的错误是这样的:
Failure/Error: click_on "icon_red_heart.png"
Capybara::ElementNotFound:
Unable to find visible css "#image-button"
spec / features / posts_spec.rb
scenario "push an image" do
visit posts_path
expect(page).to have_current_path(posts_path)
find('#image-button').click
end
likes / _likes.html.erb
<%= button_to post_like_path(post, like), id: "image-button",method: :delete, remote: true do %>
<%= image_tag("icon_red_heart.png")%>
我不知道如何指定图像。
请教我。
答案 0 :(得分:1)
如@jonrsharpe所示,您未正确引用该按钮。引用元素的最灵活的方法是为其指定一个ID并通过该ID对其进行引用。
此外,由button_to
创建的按钮可能没有内容,在这种情况下,您需要告诉Capybara该按钮不可见。
将button_to
行更改为此:
<%= button_to post_like_path(post, like), id: "image-button", remote: true do %>
然后将您的测试更改为以下内容:
scenario "push an image" do
visit posts_path # Use the name of your path here
find('#image-button', visible: false).click
end
偶然地,在method: :delete
链接中使用button_to
并没有达到您的期望。该方法自动设置为POST
,这大概是您想要的。