Capybara/selenium:等待元素隐藏

4

我需要在cucumber步骤中等待加载栏(div#loading)消失(变为display: none)。我希望以下代码可以解决问题:

find('#loading').should_not be_visible

但是它似乎不会等待。有什么想法如何实现呢?
1个回答

9

您需要使用wait_until来等待条件的满足。

wait_until { !page.evaluate_script(%{$('#loading').is(':visible')}) } 

可能有更好的检查可见性的方法,但上次我检查到page.has_no_css不能与:visible等内容一起使用。

(更新) 虽然 has_css 不支持像 :visible 这样的选择器,但 Capybara::Node::Element 有一些方法可以使上述过程更加美观。

wait_until { !find("#loading").visible? }

@MikeAski可能对于将来来到这里的人来说,添加新提议的方法会很有用。天啊,我讨厌黄瓜。 - adaam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接