概述

从 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]); } };