I need to make a loop of 3 times and 2 seconds in between each iteration. I tried these 3 options:
Option 1
var casper = require('casper').create({
verbose: false,
logLevel: 'debug'
});
casper.start(http://google.com);
casper.on('remote.message', function(msg) {
this.echo('remote message caught: ' + msg);
})
casper.thenEvaluate(function() {
var x = 0;
var intervalID = setInterval(function () {
console.log(Using setInternal + x);
if (++x === 3) {
window.clearInterval(intervalID);
}
}, 2000);
});
casper.run();
Observation: Nothing appeared because the script ended right away before the first setInterval
being called.
Option 2
Replaced thenEvaluate()
with then()
below
for (i=0; i<3; i++) {
this.wait(2000);
this.echo('Using this.wait ' + i);
}
Observation: It outputs 3 times right away and then a long wait since this.wait()
is async. This is not what I want because I want a delay in between.
Option 3
Replace the part in then()
with this below. I was thinking about doing a recursive call to waitFunc()
after each wait()
being called.
var count = 0;
var waitFunc = function() {
this.wait(2000, function() {
if (count < 3) {
casper.echo('Using this.wait ' + count);
count++;
waitFunc();
}
});
};
Observation: Nothing printed out on the screen.
So my question is: How to make this.wait or setInterval works in a loop of 3 times like this case?