为什么一个明显有类的水豚元素用has_css返回false?

时间:2014-07-16 19:51:49

标签: capybara poltergeist

我以为我可以方便地进行如下测试:

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

1 个答案:

答案 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