我在MiniTest::Spec
和Capybara
使用以下规范:
find_field('Email').must_have_css('[autofocus]')
检查名为“电子邮件”的字段是否具有autofocus
属性。 doc表示以下内容:
has_css?(path,options = {})
检查给定的CSS选择器是否在页面或当前节点上。
据我了解,字段'Email'是一个节点,因此调用must_have_css
绝对可以正常工作!我做错了什么?
答案 0 :(得分:8)
通过Jonas Nicklas得到答案:
不,它应该不起作用。 has_css?将检查是否有任何后代 元素的匹配与给定的CSS匹配。它不会检查元素 本身。由于自动对焦属性可能在电子邮件字段中 has_css?在这种情况下,它总是会返回false。
您可以尝试:
find_field('Email')[:autofocus].should be_present
这也可以用XPath完成,但我不记得语法了 我的头顶。
我的解决方案:
find_field('Email')[:autofocus].must_equal('autofocus')
答案 1 :(得分:0)
脱离我的头顶。你能用has_selector?()
吗?将Rspec与Capy一起使用:
page.should have_selector('email', autofocus: true)
同时检查Capybara匹配器http://rubydoc.info/github/jnicklas/capybara/master/Capybara/Node/Matchers
答案 2 :(得分:0)
之前我没有使用过MiniTest,但检查属性的语法看起来是正确的。
我关心的是你使用find_field。文档说:
在页面上查找表单字段。该字段可以通过其名称,标识或标签文本找到。
看起来您正在尝试根据标签查找字段。如果是这样,我会检查你有for属性,并且它具有你正在寻找的表单字段的正确id。为了排除这个问题,你可以暂时为你的表单字段打一个id并明确地查找它。