setInterval y this.wait en casper.js
Necesito hacer un bucle de3 veces y 2 segundos entre cada iteración. Probé estas 3 opciones:
Opción 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();
Observación: Nada apareció porque el guión terminó de inmediato antes de la primerasetInterval
siendo llamado.
opcion 2
ReemplazadothenEvaluate()
conthen()
abajo
for (i=0; i<3; i++) {
this.wait(2000);
this.echo('Using this.wait ' + i);
}
Observación: Da salida 3 veces de inmediato y luego una larga espera desdethis.wait()
es asincrónica. Esto no es lo que quiero porque quiero un retraso en el medio.
Opcion 3 Reemplace la parte enthen()
con esto abajo. Estaba pensando en hacer una llamada recursiva awaitFunc()
después de cadawait()
siendo llamado.
var count = 0;
var waitFunc = function() {
this.wait(2000, function() {
if (count < 3) {
casper.echo('Using this.wait ' + count);
count++;
waitFunc();
}
});
};
Observación: Nada impreso en la pantalla.
Así que mi pregunta es:¿Cómo hacer que this.wait o setInterval funcione en un bucle de 3 veces como este caso?