所以我知道我可以使用return ...
从window
将数据返回给casper
casper.evaluate(function() {
return 'foobar';
}, {});
如何使用thenEvaluate()
实现相同的目标?
答案 0 :(得分:1)
您无法从casper.thenEvaluate
返回任何内容。它将被忽视。您需要使用casper.then
将其拆分为casper.evaluate
。有关类似内容,请参阅this question。
casper.thenEvaluate
是一个异步步骤函数,就像所有其他then*
和wait*
函数一样。从异步函数返回有用的东西是不可能的。你最想要的是:
var something;
casper.start(url).then(function(){
something = this.evaluate(function(){
return 'foobar';
});
this.click("someSelector");
}).then(function(){
// do something with "something" on the new page
});
我怀疑你不会问你以后是否不想使用something
。所有步骤函数都返回初始casper
对象,以便脚本可以使用promise语法编写,如上例所示。