如何在CasperJS中输出客户端console.log?

时间:2017-08-10 17:26:01

标签: javascript phantomjs casperjs

我正在使用CasperJS来捕获浏览器控制台的日志,但它不起作用。

[subs="macros,attributes"]
----
link:{my_attribute}[Example Link,window="_blank"].
----

在Chrome中,该页面会输出一些日志,如:

var casper = require('casper').create({
  logLevel: "debug"
});

var domain, port, userName, designID, token, outPath, reportUrl, explorerUrl, sourcePage;
var images = [];

if(casper.cli.has(5)){
  // Get argvs
  domain = casper.cli.get(0).toLowerCase();
  port = casper.cli.get(1);
  userName = casper.cli.get(2);
  designID = casper.cli.get(3);
  token = casper.cli.get(4);
  outPath = casper.cli.get(5);
}

reportUrl = 'http://' + domain + ':' + port + '/design?file_id=' + designID;

casper.on('remote.message', function(message) {
  this.log('remote message caught: ' + message);
});

casper.start(reportUrl, function() {
  this.evaluate(function sendLog(log) {
    // you can access the log from page DOM
    console.log('from the browser, I can tell you there are ' + 
    log.length + ' entries in the log');
  }, this.result.log);
});

casper.run();

但在CasperJS中,它不会输出任何日志。

1 个答案:

答案 0 :(得分:0)

如果将log替换为echo,您应该看到以下(简化)脚本正在运行:

var casper = require('casper').create();

casper.on('remote.message', function (message) {
  this.echo('Message: ' + message);
});

casper.start('http://example.com/');

casper.waitForSelector('body', function () {
  this.evaluate(function () {
    console.log('Hello, World!');
  });
});

casper.run();

但如果您真的想使用log,则需要指定verbose选项以及日志级别......

从命令行:

casperjs --log-level=debug --verbose=true example.js

来自剧本:

var casper = require('casper').create({
  logLevel: 'debug',
  verbose: true
});