Capybara field.has_css?匹配

Mar*_*her 5 ruby minitest capybara ruby-on-rails-3

我使用以下规格与MiniTest::Spec和Capybara:

find_field('Email').must_have_css('[autofocus]')
Run Code Online (Sandbox Code Playgroud)

检查名为"电子邮件"的字段是否具有该autofocus属性.该文件说:

has_css?(path,options = {})

检查给定的CSS选择器是否在页面或当前节点上.

据我所知,字段'电子邮件'是一个节点,所以调用must_have_css肯定是有效的!我做错了什么?

Mar*_*her 8

得到了Jonas Nicklas的回答:

不,它应该不起作用.has_css?将检查 元素的任何后代是否与给定的CSS匹配.它不会检查元素本身.由于自动对焦属性可能在电子邮件字段本身,has_css?在这种情况下,将始终返回false.

你可以试试:

find_field('Email')[:autofocus].should be_present
Run Code Online (Sandbox Code Playgroud)

这也可以用XPath来完成,但我无法回想起我的语法.


我的解决方案

find_field('Email')[:autofocus].must_equal('autofocus')
Run Code Online (Sandbox Code Playgroud)