我正在使用以下代码将一些JSON数据加载到我的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();
});
这就像我想要的那样 - 我有我需要处理的journalJson对象。但是,我不确定如何继续我的测试。添加到casper.run()的其他函数不会按预期执行...例如,如果我将casper run函数更改为:
casper.run(function() {
var journalJson = JSON.parse(this.getPageContent());
require('utils').dump(journalJson);
this.open(baseUrl).then(function () {
this.assertExists('#header');
});
this.exit();
});
然后phantomjs记录请求url,但测试永远不会运行。
我的问题:如何通过get访问JSON,然后使用它来执行测试?我想我在这里错过了一些东西......
答案 0 :(得分:6)
在您可能执行casper.exit()
回调之前,您正在调用then
。
尝试这样的事情:
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();
});