这是目前不可能的&我不知道未来是否有可能。 问题是,您必须覆盖浏览器中的console
对象。这意味着,你必须积极改变用户环境中的某些东西。我不认为这是一个好主意。
虽然,有可能是你的问题的解决办法;)
比方说,你写一个调试功能(作为客户端的JavaScript文件)是这样的:
window.myDebugLog = [];
window.myDebug = function() {
var list = Array.prototype.slice.call(arguments, 0);
window.myDebugLog.push(list);
}
现在,让我们修改日志记录功能的位:
$('#link').on('click', function() {
var msg = 'Click link';
console.log(msg);
window.myDebug(msg);
});
有了这个,你可以访问&输出的记录。更妙的是,使用一些ClojureCompiler或Esprima的乐趣时,您可以在构建生产代码时解析出调试的东西,这样就不需要发布它。
在你Dalek的测试,只是这样做:
module.exports = {
'Clicked link': function (test) {
test.open('http://localhost/')
.click('#link')
.execute(function() {
this.data('logs', window.myDebugLog);
})
.log.message(function() {
return JSON.stringify(test.data('logs').pop());
})
.done();
}
};
这将使你在命令行输出的日志的东西。 如果你不愿意添加这个额外的函数调用,你也可以自己覆盖console.log
。但这可能会导致一些麻烦,所以请带上一点盐:
window.myDebugLog = [];
window.oldLog = console.log;
console.log = function() {
var list = Array.prototype.slice.call(arguments, 0);
window.myDebugLog.push(list);
window.oldLog.apply(console, list);
};
希望能帮助你解决问题。