2016-04-29 1 views
0

J'utilise JWTs pour gérer l'état connecté, donc je dois effacer localstorage avant d'exécuter casper.start. Comment est-ce possible?CasperJs faire quelque chose avant de commencer?

Quelque chose comme:

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

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

Répondre

0

Vous pouvez appeler casper.start sans arguments pour initialiser les données internes et faire vos trucs:

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

Le problème est que si vous appelez casper.start sans URL , la page restera sur environ: vide lorsque vous essayez d'effacer localStorage. Il existe essentiellement deux solutions:

  • Utilisez le module fs de PhantomJS supprimer la base de données de localStorage qui est dans le temporary files directory for PhantomJS.
  • Ouvrez la page cible, effacez le localStorage et ouvrez à nouveau la page cible.

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