Javascript capserjs utils.dump日志“[object]”
我的客户端代码中包含以下内容:Javascript capserjs utils.dump日志“[object]”,javascript,testing,logging,casperjs,Javascript,Testing,Logging,Casperjs,我的客户端代码中包含以下内容: console.log('login', S.loginData) 在我的casperjs测试中 casper.on('remote.message', function(msg) { utils.dump(msg) }) 控制台输出始终为: "login [object Object]" 如何正确记录对象 这是非常好的行为,因为页面上下文中的console.log'login',S.loginda生成一个字符串。与Chrome中的开发工具相反,对象在
console.log('login', S.loginData)
在我的casperjs测试中
casper.on('remote.message', function(msg) {
utils.dump(msg)
})
控制台输出始终为:
"login [object Object]"
如何正确记录对象 这是非常好的行为,因为页面上下文中的console.log'login',S.loginda生成一个字符串。与Chrome中的开发工具相反,对象在记录后无法检查。它必须直接转换为可打印格式。如果S.loginData没有toString函数,它将被打印为[object] 如果希望S.loginData的属性不包括函数,可以尝试
console.log('login', JSON.stringify(S.loginData));
在页面上下文中,选择您的页面。如果您无法更改此行,则可以尝试在导航/初始化开始时的某个地方使用proxy console.log,如下所示:
casper.evaluate(function(){
var oldlog = console.log;
console.log = function(){
var fixedArgs = arguments.map(function(arg){
return JSON.stringify(arg);
});
oldlog.apply(console, fixedArgs);
};
});
console.log语句与casper.on语句有什么关系?对不起。我犯了一个错误。使用remote.message事件casperjs将remote console.log管道传输到stdout。我会使用util.inspect进行更深入的日志记录,但这是不可用的。谢谢,这将清除很多!所以,如果一个对象有一个toString函数,它会被自动调用?是的,至少在当前的Chrome中是这样。由于PhantomJS 1.x与Chrome 13相当,我怀疑它可以工作。