在我通过设计登录后,我点击带有附加 javascript 的按钮,这使得一些 HTML 可见。
<button id="btn_simple_search"
class="btn btn-primary btn-md well_button"
data-toggle="button"
>
Search
</button>
调用函数
$("#btn_simple_search").click(function(){
$("#simple_search").toggle(500);
});
我想让 capybara 测试等到这个功能完成(我不知道 - 比如一些回调或其他东西)而不是让
sleep 0.6
在我单击其他按钮或从新显示的 HTML 块中选择一些选项之前。我使用 Minitest 作为测试框架。怎么做?上面的 javascript 直接嵌入在页面上。
最佳答案
Capybaras 查找器(除了 all/first
)、匹配器和 session 操作默认为等待/重试行为,专门用于处理您正在谈论的问题。他们(默认情况下)会等到 Capybara.default_max_wait_time
所需元素出现在页面上的秒数。这意味着当您执行一个需要一些时间的操作并且您想等待它完成时,您需要指示 Capybara 在页面上查找更改以指示完成的内容。单击使事物可见的按钮时,这可能是在寻找出现的文本内容,也可能只是告诉它单击一个变得可见的按钮,因为找到该按钮将稍等片刻,直到它变得可见。
其中的一个问题是页面上存在动画的项目。这里的问题是项目变得可见但仍在移动。这可能会导致某些驱动程序(尤其是 Poltergeist 由于无法真正解决的架构问题)在页面上的错误位置单击。最好的解决方案是在测试模式下禁用动画,这也将加速您的测试,但具体如何执行取决于您使用哪些库来生成动画。
关于ruby-on-rails - Capybara/Poltergeist - 等待 JavaScript 完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41854537/