2016-04-29 6 views
0

Ich verwende JWTs, um den eingeloggten Status zu verwalten, daher muss ich den lokalen Speicher löschen, bevor ausgeführt wird. Wie ist das möglich?CasperJs etwas vor dem Start tun?

Etwas wie:

casper.then(function() { 
    casper.evaluate(function() { 
    localStorage.clear() 
    }) 
}) 

casper.start('http://localhost:3000', function() { 
    test.assertUrlMatch('http://localhost:3000') 
}) 

Antwort

0

Sie können casper.start aufrufen, ohne irgendwelche Argumente, die internen Daten zu initialisieren und dann Sachen tun:

casper.start() 
    .then(function() { 
     casper.evaluate(function() { 
     localStorage.clear() 
     }) 
    }) 
    .thenOpen('http://localhost:3000', function() { 
     test.assertUrlMatch('http://localhost:3000') 
    }) 

Das Problem ist, dass, wenn Sie rufen casper.start ohne URL Die Seite bleibt ungefähr: leer, wenn Sie versuchen, localStorage zu löschen. Grundsätzlich gibt es zwei Lösungen:

  • Verwenden Sie das fs Modul von PhantomJS die localstorage-Datenbank zu löschen, die in der temporary files directory for PhantomJS ist.
  • Öffnen Sie die Zielseite, löschen Sie localStorage, und öffnen Sie die Zielseite erneut.

    var url = "..."; 
    casper.start(url, function() { 
        this.evaluate(function() { 
        localStorage.clear() 
        }) 
    }) 
    .thenOpen(url, function() { 
        test.assertUrlMatch('http://localhost:3000') 
    })