2012-07-19 7 views
6

Tôi đang sử dụng đoạn mã sau để tải một số dữ liệu JSON vào một biến trong casperJS kịch bản của tôi:Làm thế nào để tải JSON qua get vào biến trong CasperJS kịch bản

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(); 
}); 

này hoạt động giống như tôi muốn - Tôi có đối tượng journalJson mà tôi cần xử lý. Tuy nhiên, tôi không chắc chắn làm thế nào để tiếp tục với thử nghiệm của tôi. các chức năng khác bổ sung vào casper.run() không thực hiện như mong đợi ... ví dụ, nếu tôi thay đổi chức năng casper chạy đến:

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

sau đó phantomjs bản ghi rằng url được yêu cầu, nhưng các thử nghiệm là không bao giờ chạy.

Câu hỏi của tôi: Làm cách nào để truy cập JSON qua nhận và sau đó sử dụng nó để thực hiện kiểm tra? Tôi nghĩ rằng tôi đang thiếu thứ gì đó ở đây ...

Trả lời

6

Bạn đang gọi số casper.exit() trước khi cuộc gọi lại then của bạn có thể được thực hiện.

Hãy thử một cái gì đó giống như thay vì điều này:

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

Hi, tôi có cùng một vấn đề tôi muốn nói chúng tôi đã có được nạp JSON nhưng làm thế nào tôi có thể lấy nó làm việc trong một trường hợp đó sẽ là một mảng các URL mà tôi muốn để lặp lại và nhận mã phản hồi? – Denis