如何在夜班中调试

时间:2016-04-12 16:44:57

标签: debugging nightwatch.js

我正在尝试在夜班中调试。 当我输入一个console.log时,它会在测试运行之前打印 - 同时它会进行某种构造/编译测试。 我也尝试了visual studio代码调试器和同样的事情 - 断点在实际运行测试之前命中。 谢谢你的帮助 - 马克

2 个答案:

答案 0 :(得分:6)

" nightwatch"建立在node.js上。 Node.js异步执行语句。如果您编写console.log();,它将以异步方式执行。

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

要与夜班中的其他语句同步执行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();)。不要在这里传递任何计时器。它会停止执行。

答案 1 :(得分:0)

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

这是因为您的代码是异步运行的(因为这是javascript的工作方式),并且浏览器开始实际测试之前,所有与浏览器/ html无关的内容都会运行。我建议您尝试使用 回调 ,以避免首先打印您的支票信息(这样您就可以将console.log链接到依赖于浏览器的代码和它只有在完成后才会运行。如果这样做,控制台日志的调试实际上会有效。

作为一个例子,也许你可以学习here如何做到这一点。