2012-07-19 8 views
6

estoy usando el siguiente código para cargar algunos datos JSON en una variable en mi casperJS guión:Cómo cargar JSON a través de entrar en variable en la escritura 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(); 
}); 

Esto funciona como yo quiero - tengo el Objeto journalJson que necesito para hacer mi procesamiento. Sin embargo, no estoy seguro de cómo continuar con mis pruebas. Otras funciones añadidas a casper.run() no se ejecutan como se esperaba ... por ejemplo, si cambio de la función de Casper ejecución para:

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

continuación PhantomJS registros que se solicita la URL, pero la prueba no es nunca correr.

Mi pregunta: ¿Cómo puedo acceder a JSON a través de get, y luego usarlo para realizar pruebas? Creo que me falta algo aquí ...

Respuesta

6

Está llamando al casper.exit() antes de que se realice su devolución de llamada then.

Pruebe algo como esto en su lugar:

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

Hola, tengo el mismo problema que decir que ya hemos cargado JSON, pero ¿cómo puedo conseguir que funcione en un caso que será una serie de URL que quiero para iterar y obtener códigos de respuesta? – Denis

Cuestiones relacionadas