使用:
Ruby: ruby 1.9.3dev (2011-09-23 revision 33323) [i686-linux]
Rails: 3.2.9
Capybara: 2.0.3
我有一个Rails应用程序,其中有点击它应提交AJAX POST请求,并返回一个JS响应时的链接。
链接代码:
link_to("Send Notification", notification_path(user_id: user_id), remote: true, method: :post)
的JS响应(的.js。HAML文件)应触发链接存在页面上的以下隐藏的div:
#notification_status(style='display:none')
js.haml文件内容:
:plain
var notificationStatusContainer = $('#notification_status');
notificationStatusContainer.val("#{@notification_status_msg}");
notificationStatusContainer.show();
我是在试探我发送通知并显示 的场景向使用黄瓜的用户发送通知状态消息(黄瓜栏,内置 水豚支持)
我试图测试有ID的元素:在我一步definition.For这个成功的响应notification_status是可见 我尝试下面的语句:
page.find('#notification_status').should be_visible
page.should have_selector('#notification_status', visible: true)
page.should have_css('#notification_status', visible: true)
page.find('#notification_status', visible: true)
page.find(:css, 'div#notification_status', visible: true)
无论上述工作对我和我的失败步上面所列的.out 5段 最后4失败,以下错误:
'expected to find css "#notification_status" but there were no matches. Also found "", which matched the selector but not all filters. (Capybara::ExpectationNotMet)'
这是奇怪,因为下面的语句是路过正确:
page.has_selector?('#notification_status')
事实上,我检查使用
print page.html
这表明了
预期这
<div style='' id='notification_status'></div>
页面的源代码。
最后我发现这个链接capybara assert attributes of an element,它显示了如何以原始方式检查元素的属性。
此外,我发现在水豚文件中可见?方法(http://rubydoc.info/github/jnicklas/capybara/master/Capybara/Node/Element#visible%3F-instance_method) 以下信息:
Not all drivers support CSS, so the result may be inaccurate.
因此,我得出的结论是元素的可见性测试时 不靠水豚的可见的结果吗?使用CSS选择器 和使用该解决方案时,方法链接建议capybara assert attributes of an element
我想出了以下内容:
module CustomMatchers
def should_be_visible(css_selector)
find(css_selector)['style'].should_not include('display:none', 'display: none')
end
end
World(CustomMatchers)
用法:
should_be_visible('#notification_status')
行的东西是什么驱动程序是什么?一旦XHR完成,预期的HTML是什么? – 2014-10-15 09:08:45