2012-07-19 14 views
6

Sto utilizzando il seguente codice per caricare alcuni dati JSON in una variabile nel mio script casperJS:Come caricare JSON tramite get nella variabile nello script CasperJS

var casper = require("casper").create({ 
    verbose: true, 
    logLevel: 'debug', 
    pageSettings: { 
     userName: 'dev', 
     password: 'devpass', 
    } 
}); 
var baseUrl = 'http://mysite.com/'; 

casper.start().then(function() { 
    this.open(baseUrl + 'JSON-stuff', { 
     method: 'get', 
     headers: { 
      'Accept': 'application/json' 
     } 
    }); 
}); 

casper.run(function() { 
    var journalJson = JSON.parse(this.getPageContent()); 
    require('utils').dump(journalJson); //this returns my json stuff as expected 
    this.exit(); 
}); 

Questo funziona come voglio - ho la oggetto JournalJson che ho bisogno di fare la mia elaborazione. Tuttavia, non sono sicuro di come continuare con i miei test. Altre funzioni aggiunte al casper.run() non vengono eseguiti come previsto ... per esempio, se cambio la funzione run Casper a:

casper.run(function() { 
    var journalJson = JSON.parse(this.getPageContent()); 
    require('utils').dump(journalJson); 
    this.open(baseUrl).then(function() { 
     this.assertExists('#header'); 
    }); 
    this.exit(); 
}); 

poi phantomjs registri che si richiede l'url, ma il test non è mai correre.

La mia domanda: Come posso accedere a JSON tramite get e utilizzarlo per eseguire test? Penso che mi manchi qualcosa qui ...

risposta

6

Stai chiamando casper.exit() prima che il tuo then sia eventualmente eseguito.

provare qualcosa di simile, invece:

casper.then(function() { // <-- no more run() but then() 
    var journalJson = JSON.parse(this.getPageContent()); 
    require('utils').dump(journalJson); 
}); 

casper.thenOpen(baseUrl, function() { 
    this.test.assertExists('#header'); // notice: this.test.assertExists, not this.assertExists 
}); 

casper.run(function() { 
    this.test.done(); 
}); 
+0

Ciao, ho lo stesso problema Voglio dire che hanno già caricato JSON ma come posso farlo funzionare in un caso che sarà una serie di URL che voglio per iterare e ottenere i codici di risposta? – Denis

Problemi correlati