After some debugging, it appears I'm having difficulty either clicking or triggering the click event of this button within CasperJS:
<a id="generate" class="btn" href="#generate"><strong>Generate</strong></a>
Here's the code I have so far:
var casper = require('casper').create({ clientScripts: [ '...\\JQuery\\jquery-1.11.1.min.js' ], pageSettings: { userAgent: 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0' } }); casper.on('page.initialized', function (page) { page.evaluate(function () { (function() { window.screen = { width: 1600, height: 900 }; var fake_nav = {}; for (var i in navigator) { fake_nav[i] = navigator[i]; } fake_nav.javaEnabled = function() { return true; }; fake_nav.language = 'en-US'; window.navigator = fake_nav; })(); }); }); casper.start('http://www.json-generator.com/', function() { this.echo("Loaded successfully."); }); var template = '[\'{{repeat(1,3)}}\', {asdf: "hello"} ]'; casper.then(function() { this.evaluate(function(input) { window.$('.CodeMirror')[0].CodeMirror.setValue(input); }, template); }); casper.then(function() { this.evaluate(function() { document.$('#generate').click(); }); }); casper.then(function() { var doc = this.evaluate(function($) { return window.$('.CodeMirror')[1].CodeMirror.getValue(); }); this.echo(doc); }); casper.run(function() { this.echo('All Done.'); this.exit(); });
This generates the output (note the blank line from the "casper.echo(doc)"):
Loaded successfully. All Done.
I've confirmed that my javascript works in the browser console in both Chrome and Firefox. Why can't I click this button in CasperJS?
Instead of using the evaluate function and click on your element in the page DOM environment (with jQuery), just use the casper method : this.click('#generate.btn');
. It's easier.
There is also the clickLabel() function.