Capybara/selenium:等待元素隐藏

art*_*ave 4 selenium cucumber capybara

我需要等待加载条(div #loading)在黄瓜步骤中消失(变为display:none).我希望以下内容可以解决问题

find('#loading').should_not be_visible
Run Code Online (Sandbox Code Playgroud)

但似乎并没有等待.任何想法如何实现?

now*_*owk 9

您将希望使用wait_until等待您的条件得到满足.

wait_until { !page.evaluate_script(%{$('#loading').is(':visible')}) } 
Run Code Online (Sandbox Code Playgroud)

可能有更好的等待来检查可见性,但上次我检查时page.has_no_css不能使用类似的东西:visible.

(更新)虽然has_css看不到选择器:visible,Capybara::Node::Element但确实有一些方法可以使上面的内容更漂亮.

wait_until { !find("#loading").visible? }
Run Code Online (Sandbox Code Playgroud)