Capybara-webkit无法处理与bootstrap glyphicon的链接

Obr*_*ios 5 rspec ruby-on-rails twitter-bootstrap capybara-webkit

我有一个链接:

link_to %q(<span class='glyphicon glyphicon-trash'/>).html_safe, feed_item, data: {confirm: 'Are you sure?',toggle: 'tooltip'}, method: :delete, title: 'Delete', id: 'delete_post'
Run Code Online (Sandbox Code Playgroud)

和以下功能规范代码

page.accept_confirm do
  click_link 'delete_post'
end
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

Capybara::Webkit::ClickFailed:
       Failed to find position for element /html/body/div[@id='wrapper']/div[@id='page-content-wrapper']/div/div[@id='main']/div[@id='main_content']/div[4]/div/div/div[1]/h3/div/a[@id='delete_post']
Run Code Online (Sandbox Code Playgroud)

如果我用一些文本(例如"删除")用glyphicon替换span,则测试有效.这似乎与Github上未解决的问题有关,可能与CSS覆盖可点击的html元素有关.但是,我无法理解在这种情况下如何发生这种重叠或如何纠正它.

将图标用于"编辑"或"删除"等常见任务已成为一种常见做法,因此最好找到解决方案.

我该如何解决这个问题?

Obr*_*ios 2

人们似乎通过修改测试来解决这个问题,要么使用 JavaScript 单击元素,要么更改覆盖项目的不透明度。相反,我选择了以下内容,这更多地依赖于 Rails 功能。我写了一个trash_icon助手,如下:

  def trash_icon
    if Rails.env.test?
      'proxy_for_trash_icon'
    else
      "<span class='glyphicon glyphicon-trash'/>".html_safe
    end
  end
Run Code Online (Sandbox Code Playgroud)

并将我的链接修改为:

link_to trash_icon, feed_item, data: {confirm: 'Are you sure?',toggle: 'tooltip'}, method: :delete, title: 'Delete', id: 'delete_post'
Run Code Online (Sandbox Code Playgroud)

和测试:

page.accept_confirm do
  click_link 'proxy_for_trash_icon'
end
Run Code Online (Sandbox Code Playgroud)

这会测试除生产系统中使用的确切文本/图标之外的所有内容。

尽管如此,希望有人能提出一个不是解决方法的解决方案。