我有一个链接:
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'
以及以下功能规范代码
page.accept_confirm do
click_link 'delete_post'
end
我收到以下错误
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']
如果我用一些文字用glyphicon替换span,例如&#39;删除&#39;,测试工作。 这似乎与Github上未解析的issue有关,可能与CSS覆盖可点击的html元素有关。但是,我无法理解在这种情况下如何发生这种重叠或如何纠正它。
将图标用于常见任务(例如编辑&#34;或者&#39;删除&#39;所以找到解决方案会很好。
如何解决此问题?
答案 0 :(得分:3)
虽然 Obromios 的答案可行,但我认为改变渲染图标的方式并不是一个好主意。特别是因为您需要将 if Rails.env.test?添加到每个图标渲染中才能使测试工作。
你可以做的就是使用它:
find('.glyphicon.glyphicon-trash').trigger('click')
而不是:
click_link 'delete_post'
答案 1 :(得分: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
并将我的链接修改为:
link_to trash_icon, feed_item, data: {confirm: 'Are you sure?',toggle: 'tooltip'}, method: :delete, title: 'Delete', id: 'delete_post'
和测试:
page.accept_confirm do
click_link 'proxy_for_trash_icon'
end
除了生产系统中使用的确切文本/图标外,它还会测试所有内容。
尽管如此,希望有人会想出一个不是解决方法的解决方案。
答案 2 :(得分:0)
除了@ ariel_scherman的回答之外,您不会忘记将js: true
添加到测试示例的开头。
这样的事情:
feature "delete the glyphicon", js: true do
............
end
这样可以启用您的javascript驱动程序
答案 3 :(得分:-1)
使用Qt 5.5.1构建capybara-webkit,&lt; 5.3左右,其中伪元素没有为链接提供任何大小,因此无处可点击