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