5

我正在使用以下规范MiniTest::SpecCapybara

find_field('Email').must_have_css('[autofocus]')

检查名为“电子邮件”的字段是否具有该autofocus属性。文档说如下:

has_css?(路径,选项= {})

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

据我了解,“电子邮件”字段是一个节点,所以调用must_have_css肯定可以工作!我做错了什么?

4

3 回答 3

8

得到乔纳斯尼克拉斯的回答:

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

你可以试试:

find_field('Email')[:autofocus].should be_present

这也可以用 XPath 来完成,但我不记得有什么语法。


我的解决方案:

find_field('Email')[:autofocus].must_equal('autofocus')
于 2011-11-28T11:53:22.240 回答
1

在我的头上。你能用has_selector?(). 使用 Rspec 和 Capy:

page.should have_selector('email', autofocus: true)

还要检查 Capybara 匹配器http://rubydoc.info/github/jnicklas/capybara/master/Capybara/Node/Matchers

于 2011-11-26T23:39:41.327 回答
0

我以前没有使用过 MiniTest,但是您检查属性的语法看起来是正确的。

我担心的是您对 find_field 的使用。文档说:

在页面上找到一个表单域。该字段可以通过其名称、ID 或标签文本找到。

看起来您正在尝试根据标签查找字段。如果是这样,我会检查您是否具有 for 属性,并且它是否具有您要查找的表单字段的正确 ID。为了排除这个问题,您可以暂时在表单字段中添加一个 id 并明确查找。

于 2011-11-28T11:08:57.870 回答