使用 ES6 async/await
概述
从 Nightwatch 版本 1.1
开始,您可以将测试编写为 ES6 async 函数。
async
函数使 API 命令能够返回一个 promise,并使您可以使用 await
运算符来检索结果,而不是像默认情况下那样使用回调。
使用 async
函数极大地提高了测试的可读性和编写便利性。从 Nightwatch 版本 1.7 开始,在使用 async
函数时,还支持链接 API 命令。
示例
tests/exampleTest.js
module.exports = {
'demo test async': async function (browser) {
// get the available window handles
const result = await browser.windowHandles();
console.log('result', result);
// switch to the second window
// await is not necessary here since we're not interested in the result
browser.switchWindow(result.value[1]);
}
};
使用回调与 async
回调仍然可以像以前一样使用,如果回调返回一个 Promise
,则 promise 的结果就是命令的结果,如以下示例代码所示。
tests/exampleTest.js
module.exports = {
'demo test async': async function (browser) {
// get the available window handles
const value = await browser.windowHandles(function(result) {
// we only want the value, not the entire result object
return Promise.resolve(result.value);
});
console.log('value', value);
// switch to the second window
browser.switchWindow(value[1]);
}
};