测试重点与水豚
问题描述:
我在视图模板测试重点与水豚
<%= link_to_function "add new category", "$('#category_name').focus()" %>
有一个简单的link_to_function
,我想用豚要求的规格来进行测试。基本规格应该是这个样子
it "focuses category form when I click 'add new category'" do
visit new_article_path
click_link "add new category"
# unfortunately there's nothing like 'has_focus?'
find_field("category_name").should have_focus
end
的问题是,我无法找到任何东西,这将检查元素具有焦点。 我发现的唯一的事情是这样的
page.evaluate_script('document.focus')[:id]
然而,这不是由capybara-wekbit
司机,我使用,以避免每次测试运行开浏览器,支持。
答
我只是用下面的代码(与phantomjs司机,但我相信,它与WebKit的作品也):
page.evaluate_script("document.activeElement.id") == "some_id"
附:一年的问题没有答案。他们应该给我一个徽章吗? :)
答
您应该使用:focus
选择,e.g:
page.should have_selector('#category_name:focus')
+4
CSS会暗示这一点,但似乎Capybara/Poltergeist不能正确处理:焦点选择器。即使在document.activeElement告诉我它具有正确的HTMLInputElement焦点时,我总是会得到':focus'的空结果。 –
非常有帮助的;你当然应该得到一个徽章。谢谢。 –
如果实际的'activeElement'实际上被异步插入到dom中,则此方法将不起作用,因为它不一定已经在dom中(因此可以被聚焦)。因此,另一个检查元素是否已经被添加了。 – ohcibi