为什么Capybara无法找到css?

时间:2017-01-10 16:06:17

标签: capybara poltergeist

我尝试编写简单的功能规范,但我不了解Capybara的行为。所以,我有那个代码:

> parent.class
=> Capybara::Node::Element
> parent.find(:css, 'button.remove-arrow')
=> Capybara::ElementNotFound: Unable to find css "button.remove-arrow"
from /Users/weare138/.rvm/gems/ruby-2.3.3/gems/capybara-2.11.0/lib/capybara/node/finders.rb:44:in `block in find'

但是当我尝试通过网络驱动程序进行呼叫时:

> parent.native.find(:css, 'button.remove-arrow')

它给我正确答案

=> [#<Capybara::Poltergeist::Node tag="button" path="//HTML[1]/BODY[1]/DIV[1]/SECTION[1]/DIV[1]/FORM[1]/DIV[2]/DIV[2]/DIV[1]/DIV[2]/DIV[1]/DIV[1]/DIV[1]/DIV[1]/DIV[1]/DIV[1]/BUTTON[1]">]

我做错了什么?

1 个答案:

答案 0 :(得分:3)

最可能的原因是该节点实际上并未在Capybara考虑的页面上可见,但驱动程序没有。如果

parent.find(:css, 'button.remove-arrow', visible: :false)

找到它将确认可见性确实是差异的元素。如果没有,则需要实际的HTML / CSS来了解原因。