0

I am using CasperJS to capture the log of browser console, but it does not work.

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();

In Chrome, the page will output some log like:

get userdata
get designdata
Success!

But in CasperJS, it does not output any log.

Badacadabra
  • 8,043
  • 7
  • 28
  • 49
Matrix
  • 11
  • 5

1 Answers1

1

If you replace log with echo, you should see that the following (simplified) script is working:

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();

But if you really want to use log, you need to specify the verbose option along with the log level...

From the command line:

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

From the script:

var casper = require('casper').create({
  logLevel: 'debug',
  verbose: true
});
Badacadabra
  • 8,043
  • 7
  • 28
  • 49