【问题标题】:What is the execution model for nightwatch custom commands, and how do I wait for them?nightwatch自定义命令的执行模型是什么,我该如何等待它们?
【发布时间】:2016-08-02 15:52:45
【问题描述】:

看来我为 Nightwatch.js 实现的自定义命令正在异步执行。自定义命令中的console.log 消息显示在调用命令后发出的console.log 消息之后。我在 nightwatch 文档中找不到有关如何执行这些命令的任何参考,但由于它们似乎是异步的,我不确定如何等待以确保在执行下一个命令之前完成一个命令(因为情况似乎并非如此)。

这是我的自定义命令(“foo”):

exports.command = function () {
    console.log('Command executed');
}

还有我的测试功能:

module.exports['my test'] = function(browser) {
    browser.resizeWindow(400, 600);
    browser.foo();
    console.log('Test function returning');
};

当我运行它时,日志显示为:

Test function returning
Command executed

如果我的自定义函数同步执行,这与我期望的相反顺序。

【问题讨论】:

    标签: javascript testing nightwatch.js


    【解决方案1】:

    如果您希望自定义命令正常工作(并同步),您需要在自定义命令中调用至少一个 Nightwatch.js 命令。

    试试这个:

    exports.command = function () {
        console.log('Command executed');
        this.execute(function() {});
    }
    

    如果您想要更深入的详细信息,可以关注此问题: https://github.com/nightwatchjs/nightwatch/issues/1123

    【讨论】:

      【解决方案2】:

      您的命令应该以callback 作为参数:

      exports.command = function (callback) {
          console.log('Command executed');
          if (callback) {
              callback();
          }
      }
      

      并像这样执行:

      browser.foo(function() {
          console.log('Test function returning');
      });
      

      另一种解决方案是使用browser.perform 方法:

      module.exports['my test'] = function(browser) {
          browser.resizeWindow(400, 600);
          browser.foo();
          browser.perform(function()
              console.log('Test function returning');
          });
      };
      

      【讨论】:

        【解决方案3】:

        这是 Nightwatch 团队的糟糕设计。我只是花了几个小时试图调试这个问题,唯一对我有用的解决方案是使用 perform()。这是荒唐的。为什么 Nightwatch 开发人员要让自定义命令异步运行。

        【讨论】:

        • 这篇文章读起来更像是咆哮而不是实际答案,并且没有提供任何关于 other answers 的新信息。对特定技术的缺点的咆哮不会在帖子中添加任何内容,对未来的读者也没有多大帮助。
        • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-24
        • 2013-08-11
        • 1970-01-01
        相关资源
        最近更新 更多