gpt4 book ai didi

node.js - 如何在zombie.js中使用browser.wait()?

转载 作者:IT老高 更新时间:2023-10-28 23:03:42 26 4
gpt4 key购买 nike

我有一个 Web 应用程序,它使用 Ajax 请求不断地从服务器轮询数据。我想使用 zombie.js 对其进行集成测试.

我要做的是等到 Ajax 轮询循环从服务器接收到数据。数据应该在 20 秒后收到,所以我使用 browser.wait(done, callback) 来检查数据是否存在,并将 waitFor 设置为最大超时一分钟。

但是,browser.wait() 总是几乎立即返回,即使我的 done 回调返回 false。

zombie API documentation ,我阅读了以下关于 browser.wait() 的内容:

... it can't wait forever, especially not for timers that may fire repeatedly (e.g. checking page state, long polling).

我想这就是我看到的行为的原因,但我真的不明白发生了什么。为什么我不能等待一分钟,直到我的轮询循环从服务器接收到数据?为什么 browser.wait() 不能等待可能重复触发的计时器?我需要做什么来实现我的测试?

最佳答案

Zombie.js 默认会等到页面上的所有脚本都已加载并执行(如果它们正在等待文档准备就绪)。

如果我对您的理解正确,您的脚本将在文档准备好 20 秒后才会执行。在这种情况下,Zombie 有一个函数可以让您在浏览器的上下文中评估 javascript,因此如果它在计时器上,您可以更快地启动您的 ajax 代码,并且您不想等待它。

browser.evaluate(expr)

另一种选择是简单地使用正常的 JavaScript 超时等待 20 秒,然后查看 DOM 以了解您期望的更改。

setTimeout(function(){
browser.document.query("#interestingElement")
}, 20*1000);

关于node.js - 如何在zombie.js中使用browser.wait()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12117423/

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