我正在将我的测试从 Intern.js 迁移到 Nightwatch.js,我确定这不是推荐的编写测试的方式,但我的测试异步生成浏览器
命令调用(我的测试使用一个有自己的命令队列的类)。根据正在执行的内容,Nightwatch 命令队列有时可能为空,但最终会被填充。我需要一种方法来手动通知 Nightwatch 何时完成,然后等到那时,否则浏览器会过早关闭。
我可以这样做:
finished() {
let done = false;
//will run at the end of my class's internal command queue
this.command
.then(() => {
done = true;
});
//will cause nightwatch to wait until my command queue is done
this.browser.perform(doneFn => {
const check = () => {
if (done) {
return doneFn();
}
setTimeout(check, 10);
}
check();
});
}
但在那种情况下 perform()
将在等待 10 秒后超时,而且我似乎无法配置它。否则我可以运行一系列约 9 秒的 perform()
调用,但这听起来太老套了。我可以重写以依赖于守夜人命令队列,但重写所有内容也需要更多工作。
最佳答案
最后,改用 nightwatch 的命令队列更容易。任何在 Intern.js 中只是 .then()
的东西都变成了各种形式的 .perform()
。
关于javascript - 如何在没有网络浏览器交互的情况下在 nightwatch.js 中等待任意时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58310273/