0
所以我知道我可以返回的數據,從使用回報window
卡斯帕...ThenEvaluate()以與evaluate()相同的方式返回嗎?
casper.evaluate(function() {
return 'foobar';
}, {});
如何做到同樣的事情thenEvaluate()
?
所以我知道我可以返回的數據,從使用回報window
卡斯帕...ThenEvaluate()以與evaluate()相同的方式返回嗎?
casper.evaluate(function() {
return 'foobar';
}, {});
如何做到同樣的事情thenEvaluate()
?
你不能從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語法編寫腳本。