【问题标题】:How to debug in nightwatch如何在 nightwatch 中调试
【发布时间】:2016-08-03 10:12:29
【问题描述】:

我正在尝试在 nightwatch 中进行调试。 当我放入 console.log 时,它会在测试运行之前打印 - 同时它会进行某种构造/编译测试。 我还尝试了 Visual Studio 代码调试器和相同的东西 - 在测试实际运行之前命中断点。 感谢您的帮助 - 标记

【问题讨论】:

  • 您遇到什么错误?所提出的问题缺乏特异性。你要修改什么文件来添加你的控制台语句?

标签: debugging nightwatch.js


【解决方案1】:

由于您实际上没有示例或运行的某些代码,因此我只能为您提供可以尝试解决问题的一般方向。

发生这种情况是因为您的代码是异步运行的(因为这就是 javascript 的工作方式),并且与浏览器/html 无关的所有内容都将在您的浏览器开始实际测试之前运行。我建议您应该尝试使用 callbacks 以避免首先打印您的检查消息(这样您就可以将 console.log 链接到取决于浏览器的代码并且它将运行只有在这完成之后。如果你这样做,控制台日志的调试将真正起作用。

也许你可以学习here 怎么做,例如。

【讨论】:

    【解决方案2】:

    “nightwatch”是基于 node.js 构建的。 Node.js 异步执行语句。如果写console.log();,会异步执行。

    您使用browser(或client)对象(例如browser.url();browser.click(); 等)编写的语句将在Selenium Server 排队。它们也由 node.js 异步执行,但在 selenium 服务器上排队。

    要与 nightwatch 中的其他语句同步执行 console.log(),请使用 .perform()。您将获得与其他语句同步的输出。

    示例

    var elementValue;
    browser
    .getValue('.some-element', function(result) {
      elementValue = result.value;
    })
    // other stuff going on ...
    //
    // self-completing callback
    .perform(function() {
      console.log('elementValue', elementValue);
      // without any defined parameters, perform
      // completes immediately (synchronously)
    })
    .end();
    

    出于调试目的,您可以停止执行以查找元素值或检查浏览器相关数据。使用此命令:browser.pause();(或client.pause();)。不要在这里传递任何计时器。它将停止执行。

    【讨论】:

    • 在浏览器中运行console.log时,有没有办法登录到nightwatch输出控制台?这在难以调试问题的 CI 中很有用?
    猜你喜欢
    • 2017-12-01
    • 2020-04-30
    • 2015-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多