CasperJS: iterando a través de URL
Soy bastante nuevo en CasperJS, pero ¿no hay una manera de abrir una URL y ejecutar comandos de CasperJS para bucles? Por ejemplo, este código no funciona como esperaba:
casper.then(function() {
var counter = 2013;
for (i = counter; i < 2014; i++) {
var file_name = "./Draws/wimbledon_draw_" + counter + ".json";
// getting some local json files
var json = require(file_name);
var first_round = json["1"];
for (var key in first_round) {
var name = first_round[key].player_1.replace(/\s+/g, '-');
var normal_url = "http://www.atpworldtour.com/Tennis/Players/" + name;
// the casper command below only executes AFTER the for loop is done
casper.thenOpen(normal_url, function() {
this.echo(normal_url);
});
}
}
});
En lugar de Casper está llamandothenOpen
en cada nueva URL por iteración, solo se llama DESPUÉS de que se ejecuta el bucle for. CasperthenOpen
luego se llama con el último valor normal_url establecido en. ¿No hay un comando de Casper para que funcione cada iteración dentro del ciclo for?
Seguimiento: ¿Cómo hacemos que casper thenOpen devuelva un valor en la iteración actual del ciclo for?
Digamos, por ejemplo, que necesitaba un valor de retornothenOpen
(tal vez si el estado de HTTP es 404 necesito evaluar otra URL, así que quiero devolver falso). ¿Es posible hacer esto?
Edicióncasper.thenOpen
llame arriba:
var status;
// thenOpen() only executes after the console.log statement directly below
casper.thenOpen(normal_url, function() {
status = this.status(false)['currentHTTPStatus'];
if (status == 200) {
return true;
} else {
return false;
}
});
console.log(status); // This prints UNDEFINED the same number of times as iterations.