我以为我可以方便地进行如下测试:
expect(node).to have_css('.ng-hide')
然而,这失败了 - 即使它有css,并且它是可见的。我不明白为什么会这样?文档说"检查给定的CSS选择器是否在页面或当前节点上。"
[12] pry(#<RSpec::Core::ExampleGroup::Nested_1>)> first('.file-row button')[:class]
=> "btn-remove close ng-hide"
[13] pry(#<RSpec::Core::ExampleGroup::Nested_1>)> first('.file-row button').has_css?(‘.ng-hide’)
=> false
[14] pry(#<RSpec::Core::ExampleGroup::Nested_1>)> first('.file-row button').visible?
=> true
答案 0 :(得分:0)
似乎#has_css?
将在节点内查找,但不在节点级别。我遇到了类似的问题,使用#parent
缩小了一个级别:
first('.slide')
=> #<Capybara::Element tag="li">
first('.slide')[:class]
=> "selected"
first('.slide').visible?
=> true
first('.slide').has_css? '.selected'
=> false
first('.slide').parent.has_css? '.selected'
=> true
first('.slide').parent
=> #<Capybara::Document>
但节点的父节点似乎是整个文档。
所以,我最终重写了我的期望陈述:
expect(first('.slide')[:class]).to include 'selected'
=> true