2012-07-19 5 views
6

Używam następujący kod załadować niektórych danych JSON do zmiennej w moim casperJS skryptu:Jak załadować JSON poprzez dostać się do zmiennej w skrypcie 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(); 
}); 

To działa jak chcę - mam obiekt journalJson, który muszę wykonać przetwarzanie. Jednak nie jestem pewien, jak kontynuować moje testy. Inne funkcje dodane do casper.run() nie wykonać zgodnie z oczekiwaniami ... na przykład w przypadku zmiany funkcji run Casper do:

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

następnie phantomjs dzienników, że adres URL jest wymagana, ale test nie jest biegać.

Moje pytanie: Jak uzyskać dostęp do JSON przez get, a następnie użyć go do przeprowadzenia testów? Myślę, że czegoś tu brakuje ...

Odpowiedz

6

Dzwonisz pod numer casper.exit(), zanim prawdopodobnie zostanie wykonane wywołanie zwrotne w postaci then.

Spróbuj coś takiego zamiast:

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

Witam, mam ten sam problem mam na myśli, że już załadowany JSON, ale jak mogę dostać pracy w przypadku, gdy będzie tablicą adresów URL, które chcę iterować i otrzymywać kody odpowiedzi? – Denis

Powiązane problemy