CasperJs, ¿cómo repetir un paso X veces en WaitTimeout?
Entonces, lo que quiero hacer es crear una función casperJS que nos permita repetir un paso X veces, actualizando primero la página, cuando esta función de paso alcanza el tiempo de espera.
Para pruebas poco confiables debido a un error / congelamiento de página específico en este momento y reduzca el porcentaje de falsos negativos.
Solo tengo un problema, no sé cómo romper este ciclo, porque estoy en el alcance de IIFE, vea el siguiente código:
var echoTest = function(){
casper.echo('Hi');
};
var trueFunction = function(){
return true;
};
var verifyFailedTest = function(number, trueReturn, thenFunction){
var i = 0;
//outer: <-------
for (; i <= number; i++){ // <------ how to break this loop in my function then()
//IIFE
(function(index){
if (index < number-1){
//Execute 'number-1' times the then() step (reload the page each time) if timeout or until trueReturn returns true
casper.then(function(){
casper.waitFor(function checkReturnTrue(){
return trueReturn();
}
, function then() {
thenFunction();
//break outer; break; return false; <------ here where I want to break the loop
}
, function timeout() {
casper.reload();
});
});
}
//last execution, will return the normal error if it fails each time
else if (index === number){
casper.then(function(){
casper.waitFor(function checkReturnTrue(){
return trueReturn();
}
, function then() {
console.log('else');
thenFunction();
});
});
}
else{console.log('verifyFailedTest() bug');}
})(i);
}
};
Intenté con la etiqueta, pero recibí un error de sintaxis.
Ejecución:
casper.test.begin('\n*************** Suite of planned test : scenario 1 **************\n', 1, function suite(test) {
casper.start('https://www.google.fr/', function() {
verifyFailedTest(3, trueFunction, echoTest);
});
casper.run(function() {
test.done();
});
});
});