Nightmare.js 在 javascript 个变量上等待()

Nightmare.js wait() on javascript variables

如何使用 nightmare.js wait() 检查 javascript object/variable 是否已加载?

我正在测试一个严重依赖 javascript 呈现内容的网页。我正在使用 Nightmare.js,在我注入数据和 运行 我的测试之前,我需要等待加载 javascript。 但是,我还没有找到使用 nightmare.js wait() 来处理 javascript 的方法。

我试过这样的方法:

nightmare
.goto('file:\\' + __dirname + '\index.html');
.wait("#ext-quicktips-tip") //make sure index.html is loaded
.wait(function() {
    return App.app //should return true when App.app is available
  }
.end()
.then();

我试过使用调试控制台,页面加载正常。 App.app 在控制台中可用,但 nightmare.js 永远不会看到 App.app

API documentation for Nightmare.js 中所述,如果您将函数传递给 wait 方法,它应该 return true 告诉 Nightmare.js 它可以恢复测试了。

因此,如果您希望测试等到 App.app 可用,您可以让函数 return 是一个布尔表达式,用于测试它是否存在,即是否 undefined,像这样:

nightmare
.goto('file:\\' + __dirname + '\index.html');
.wait("#ext-quicktips-tip") //make sure index.html is loaded
.wait(function() {
    // return true when App.app is available
    return typeof App.app !== undefined;
}
.end();

请注意,我从您的原始代码片段中遗漏了最后一个 then – 这是多余的。