Capybara找不到id的元素

oow*_*aee 5 rspec capybara

我的页面上有以下代码:

<div class="row column filter-tab">
  <div id="filter-button" class="button"><%= fa_icon 'filter' %></div>
</div>
Run Code Online (Sandbox Code Playgroud)

我有一个试图做的rspec测试

page.find('#filter-button').click
Run Code Online (Sandbox Code Playgroud)

我收到了可怕的

 Capybara::ElementNotFound:
   Unable to find css "#filter-button"
Run Code Online (Sandbox Code Playgroud)

如果我在测试中放置断点,我可以检查HTML并看到元素存在,并且我能够与它进行交互.

(byebug) page.has_css?('#filter-button', visible: false)
    false
Run Code Online (Sandbox Code Playgroud)

以及

$('#filter-button')
Object { length: 1, context: HTMLDocument ? moves, selector: "#filter-button", 1 more… }
Run Code Online (Sandbox Code Playgroud)

我开始没有想法了.我唯一能想到的是,这个按钮位于一个容器内,在页面加载后通过javascript定位(只是通过增加顶部CSS值) - 但即便如此,我认为它仍然可以在页面然后显示:false/visible:all.

mah*_*man 3

检查您是否click不在另一个块内,within例如:

within "#some_other_element" do
  #lots of other checks...
  page.find('#filter-button').click
end
Run Code Online (Sandbox Code Playgroud)

我以前经常陷入这个陷阱,特别是在附加到文档正文的模态中(在原始选择器之外)。