gpt4 book ai didi

capybara - 如何使用 capybara-webkit 等待 AJAX 调用后出现元素?

转载 作者:行者123 更新时间:2023-12-02 18:57:57 25 4
gpt4 key购买 nike

capybara 方法 wait_until 似乎不适用于 capybara-webkit。是否有任何替代解决方案或任何 Javascript 实现?

有意需要一些 sleep 的替代品,例如 sleep 2

enter image description here

最佳答案

如果您的 AJAX 调用导致 DOM 发生更改,Capybara 会等待您这样做

page.should have_selector?("some selector")

这是 Capybara 的一项特意功能,它会等待(最多 Capybara.default_wait_time)have_selector? 和相关方法为 true。

如果您的 AJAX 调用不会导致 DOM 发生更改,则无法使用 Capybara 在浏览器端等待它。您也许能够在 Javascript 中检测 AJAX 调用何时完成,并以某种方式将其传达给 Capybara,但这会将您的测试和实现紧密结合起来。在这种情况下,常见的方法是等待 AJAX 调用的服务器端效果(创建、更新或删除模型对象、发送电子邮件等)发生。由于 Capybara 无法看到服务器端,因此您必须自己等待服务器端更改。

在 Capybara 1 中,您可以使用 Capybara 的 wait_until 来等待服务器端更改。 wait_until 已从 Capybara 2 中删除。我在 my answer 中发布了 wait_until 的实现。至Why does adding "sleep 1" in an after hook cause this Rspec/Capybara test to pass?

关于capybara - 如何使用 capybara-webkit 等待 AJAX 调用后出现元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24649483/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com