所以我调用第一个url ...它返回一个JSON对象,我将该JSON对象存储在一个名为array_map($array, function ($item) { return $item->method();});
...的全局变量中,然后使用global_input
<打开一个链接/ p>
global_input.token
这是日志
var global_input = {'token' : 'xxx'} ;
casper.start('http://localhost/client/charg/que' , function (content) {
})
.then(function() {
global_input = JSON.parse(this.getPageContent());
casper.log( ' ==== token === > ' + global_input.token , 'debug');
})
.thenOpen('http://localhost/client/charg/go/' + global_input.token , function() {
})
.run(function(){
this.echo("DONE1");
this.exit();
});
如您所见,即使日志显示page init .....
[info] [phantom] Step anonymous 2/5 http://localhost/client/charg/que (HTTP 200)
[info] [phantom] Step anonymous 2/5: done in 725ms.
[info] [phantom] Step anonymous 3/5 http://localhost/client/charg/que (HTTP 200)
[debug] [phantom] ==== token === > e608e91335fd622f430692d40e7ddf0f4b63428d
[info] [phantom] Step anonymous 3/5: done in 750ms.
[debug] [phantom] opening url: http://localhost/client/charg/go/xxx, HTTP GET
被设置为新值
token
在下一步中,我仍然获得令牌的默认值==== token === > e608e91335fd622f430692d40e7ddf0f4b63428d
xxx
我想念什么吗?
答案 0 :(得分:2)
您的global_input已在thenOpen方法中注册为其初始值。
喜欢
casper.start(static url , callback method)
.then(callback method)
.thenOpen(static url (here, initial global object is used) , callback method)
.run(callback method);
因此,如果您更改static_url中的任何内容,casperjs将不会知道,因为它已经在casperjs的执行堆栈中注册了这些url。
您需要这样做
var global_input = {'token' : 'xxx'} ;
// this method will be called again when evaluating the url
function getGlobalToken() {
return global_input.token;
}
现在调用这样的get方法
thenOpen('http://localhost/client/charg/go/' + getGlobalToken() , function() {
})