CasperJS: Iterando através de URLs
Eu sou bastante novo no CasperJS, mas não existe uma maneira de abrir uma URL e executar comandos do CasperJS para loops? Por exemplo, esse código não funciona como eu esperava:
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);
});
}
}
});
Em vez de Casper está chamandothenOpen
em cada novo URL por iteração, ele é chamado apenas APÓS a execução do loop for. CasperthenOpen
então é chamado com o último valor normal_url definido como. Não existe um comando Casper para que ele funcione a cada iteração no loop for?
Acompanhamento: Como fazemos com que o casper thenOpen retorne um valor na iteração atual do loop for?
Digamos, por exemplo, eu precisava de um valor de retorno nessethenOpen
(talvez se o status HTTP for 404, eu precise avaliar outro URL para retornar falso). Isso é possível?
Ediçãocasper.thenOpen
ligue acima:
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.