2016-11-03 2 views
0

Ich möchte die Funktion waitForUrl() von http://docs.casperjs.org/en/latest/modules/casper.html#waitforurl verwenden. Nachdem ein Login-Formular gesendet wurde, sollte casperjs warten, bis die nächste Seite geladen ist. In dem Code unten sehen Sie die "Zweite Variante", so versuche ich das zu programmieren und Sie sehen auch die aufgetretene Fehlermeldung. Die "Erste Variante" funktioniert und das Dashboard.png wird erfasst.Casperjs und waitForUrl(), um auf die nächste Seite zu warten

Kann jemand erklären, was mit der "zweiten Variante" nicht stimmt?

// ... 

    // Type and send login Form 
    casper.then(function() { 
      this.evaluate(function(){          
        $("username").value="admin"; 
        $("password").value="pass#"; 
        $("login").click(); 
      }); 
    }); 

    // First variant (works) ----------------- 
    // casper.then(function() { 
    //  this.clickLabel('Dashboard', 'a'); 
    // }); 

    // Second variant (works not, error) ----------------- 
    // casper.waitForUrl(/\/admin\/index\.php/,function() { 
    //  this.clickLabel('Dashboard', 'a'); 
    //}); 
    // -> [error] [phantom] Wait timeout of 5000ms expired, exiting. 
    // -> Wait timeout of 5000ms expired, exiting. 


    casper.then(function(){ 
      this.capture('./dashboard.png'); 
    }); 
+0

http://docs.casperjs.org/en/latest/modules/casper.html#waitforurl –

+1

@Igor Ich habe diesen Link bereits in meiner Frage gepostet! Was ist falsch in meinem Code? Ich kann keine Unterschiede zwischen meinem Code und den Dokumenten sehen. –

Antwort

0

Ich habe es!

Die "zweite Variante" war nicht das Problem. Der Login-Schritt davor führt zum Fehler. Für einen korrekten Login-Schritt muss ich eine Sekunde warten, bis casperjs die Cookies gesetzt hat.

Ich änderte auch den Weg zum Ausfüllen Ende Senden des Formulars. Mit dem folgenden Login in der „zweiten Variante“ Step mit dem waitForUrl() arbeitet korrekt:

// Type and send login Form 
casper.wait(1000,function(){ 
      this.fill('.tl_login_form', { 
        username: "admin", 
        password: "pass#" 
      },true); 
}); 

Zusätzlich folgende Warnung ist weg! Also das könnte bedeuten, jedes Mal bekam diese Warnung, und Sie wissen nicht, warum, gehen Sie und Ihre Cookies überprüfen:

[warning] [phantom] Loading resource failed with status=fail: http://mytestdomain.de 
+1

Btw warten mit einer Zeit möglicherweise nicht funktionieren, wenn die Anmeldung nicht nach 1 Sekunde reagiert, eine andere Option ist, etwas wie 'casper.waitForText ('Sie sind angemeldet', function() ...' siehe http: // docs.casperjs.org/en/latest/modules/casper.html#waitfortext Es wird wahrscheinlich auch ein bisschen beschleunigen – Rippo

Verwandte Themen