我正在使用以下规范MiniTest::Spec
和Capybara
:
find_field('Email').must_have_css('[autofocus]')
检查名为“电子邮件”的字段是否具有该autofocus
属性。文档说如下:
has_css?(路径,选项= {})
检查给定的 CSS 选择器是否在页面或当前节点上。
据我了解,“电子邮件”字段是一个节点,所以调用must_have_css
肯定可以工作!我做错了什么?
我正在使用以下规范MiniTest::Spec
和Capybara
:
find_field('Email').must_have_css('[autofocus]')
检查名为“电子邮件”的字段是否具有该autofocus
属性。文档说如下:
has_css?(路径,选项= {})
检查给定的 CSS 选择器是否在页面或当前节点上。
据我了解,“电子邮件”字段是一个节点,所以调用must_have_css
肯定可以工作!我做错了什么?
得到乔纳斯尼克拉斯的回答:
不,它不应该工作。has_css? 将检查元素的任何后代是否与给定的 CSS 匹配。它不会检查元素本身。由于自动对焦属性可能在电子邮件字段本身上,has_css? 在这种情况下将始终返回 false。
你可以试试:
find_field('Email')[:autofocus].should be_present
这也可以用 XPath 来完成,但我不记得有什么语法。
我的解决方案:
find_field('Email')[:autofocus].must_equal('autofocus')
在我的头上。你能用has_selector?()
. 使用 Rspec 和 Capy:
page.should have_selector('email', autofocus: true)
还要检查 Capybara 匹配器http://rubydoc.info/github/jnicklas/capybara/master/Capybara/Node/Matchers
我以前没有使用过 MiniTest,但是您检查属性的语法看起来是正确的。
我担心的是您对 find_field 的使用。文档说:
在页面上找到一个表单域。该字段可以通过其名称、ID 或标签文本找到。
看起来您正在尝试根据标签查找字段。如果是这样,我会检查您是否具有 for 属性,并且它是否具有您要查找的表单字段的正确 ID。为了排除这个问题,您可以暂时在表单字段中添加一个 id 并明确查找。