Wie man CasperJS anweist, eine Reihe von Seiten zu durchlaufen

Ich versuche, CasperJS dazu zu bringen, Folgendes zu erreichen:

Gehen Sie eine Reihe von Seiten durch, deren Namen nach Datum sortiert sind.uchen Sie auf jeder Seite einen PDF-Lin Laden Sie das PDF herunter.

Ich habe einen funktionierenden Code, aber ich verstehe nicht, wie CasperJS die Abfolge der Ereignisse durchläuft.

Zum Beispiel versucht CasperJS im folgenden Codebeispiel, Schritt 2 zu verarbeiten, und löst einen "ReferenceError: Can't find variable: formDate" aus, während Schritt 1 aus irgendeinem Grund überhaupt nicht ausgeführt wird.

Was stimmt nicht mit meiner Argumentation?

Es scheint mir, dass diewhileie @ -Schleife wird mit einer anderen Geschwindigkeit als die @ -Schleife ausgeführcasper.then Methoden.

casper.start();

casper.thenOpen('http://www.example.com', function() {
    this.echo(this.getTitle());
});

casper.then(function() {

    var start = new Date('2013-01-01T00:00:00');
    var end = new Date('2013-01-31T00:00:00');

    while(start < end) {

          // step 1: define formDate  
          casper.then(function() {
            var formDate = start.getFullYear()+"-"+("0" + (start.getMonth() + 1)).slice(-2) +"-"+("0" + start.getDate()).slice(-2) ;
            casper.echo(formDate);

          });

          // Step 2: open the page and download the file
          casper.thenOpen('http://www.example.com/' + formDate, function() {

                        var url = this.getElementAttribute('div#pdffulllink a.pdf', 'href');
                        this.echo(url);
                        this.download(url, 'Downloaded_' + formDate + '.pdf');

          });

          casper.then(function() {
          // Step 3: redefine start
            var newDate = start.setDate(start.getDate() + 1);
            start = new Date(newDate);

          });

    }

});


casper.run(function() {
    this.echo('Done.').exit();
});

Antworten auf die Frage(2)

Ihre Antwort auf die Frage