I try to make CasperJS achieve the following:
After some research, I found a solution to this problem.
The issue is caused by casper.thenOpen being an asynchronous process, and the rest of the javascript being synchronous.
I applied an elegant method found in this thread (Asynchronous Process inside a javascript for loop).
Following that method, here is an example that works with CasperJS:
var casper = require('casper').create({
pageSettings: {
webSecurityEnabled: false
}
});
casper.start();
casper.then(function() {
var current = 1;
var end = 4;
for (;current < end;) {
(function(cntr) {
casper.thenOpen('http://example.com/page-' + cntr +'.html', function() {
this.echo('casper.async: '+cntr);
// here we can download stuff
});
})(current);
current++;
}
});
casper.run(function() {
this.echo('Done.').exit();
});
This example will output the following:
casper.async: 1
casper.async: 2
casper.async: 3
Done.
The loop is working! :)