Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript capserjs utils.dump日志“[object]”_Javascript_Testing_Logging_Casperjs - Fatal编程技术网

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相当,我怀疑它可以工作。