你怎么测试,如果div标签具有一定的CSS样式? 我想,以测试它是否有display:none;
或display:block
。
我尝试以下,但它给我的错误:
it {should have_selector('signup_server_generic_errors', /display:\s*none/)}
你怎么测试,如果div标签具有一定的CSS样式? 我想,以测试它是否有display:none;
或display:block
。
我尝试以下,但它给我的错误:
it {should have_selector('signup_server_generic_errors', /display:\s*none/)}
我建议,而不是试图找到css样式,而不是你写你的测试,以找到CSS类名 。
这样,在保持类一样,你可以改变底层CSS样式和你的测试仍然会通过。
搜索潜在的风格是脆。 风格经常改变。 在查找特定风格元素立足您rspecs让你的测试更脆弱 - 他们将更有可能时,所有你要做的就是改变一个div的外观和感觉失败。
在寻找CSS类立足您的测试,使测试更加健壮。 这使他们能保证你的代码是否正常工作,而不是要求您,当您更改页面样式改变它们。
在这种情况下具体地,一种选择可以是定义一个CSS类名为.hidden
,其设定display:none;
一个元素将其隐藏。
像这样:
CSS:
.hidden {
display:none;
}
HTML:
<div class="hidden">HIDE ME!</div>
水豚:
it {should have_css('div.hidden') }
这水豚只是寻找具有一个div hidden
类-你可以使这个匹配,如果你需要更复杂的。
但主要的问题是这样的 - 连接样式CSS类名,再配合你的测试类,而不是风格。
你可以使用has_css?
匹配器。 它可以接受:visible
选项。 欲了解更多详情,您可以检查文档: http://rdoc.info/github/jnicklas/capybara/Capybara/Node/Matchers#has_css%3F-instance_method
例如,你可以试试:
it { should have_css('div.with-some-class', :visible => true) }
我的方法,以确保该元素具有一定的阶级:
let(:action_items) { page.find('div.action_items') }
it "action items displayed as buttons" do
action_items.all(:css, 'a').each do |ai|
expect(ai[:class]).to match(/btn/)
end
end
或smthing这样
expect(ai[:style]).to match(/color: red/)
我在这里找到: http://rubydoc.info/github/jnicklas/capybara/Capybara/Node/Element#%5B%5D-instance_method