我在 CasperJS 脚本中遇到以下范围问题。当传入 casper.thenOpenAndEvaluate() 时,baseTargetUrl 未定义。这是为什么?我该如何解决这个问题?
var baseTargetUrl;
.....
casper.then(function() {
baseTargetUrl = this.evaluate(function() {
return __utils__.getElementByXPath('//*[@id="wrapper"]/div[1]/a[2]')["href"];
});
console.log('logging: '+baseTargetUrl); // works
});
casper.thenOpenAndEvaluate(baseTargetUrl ,function() { //baseTargetUrl is undefined here
var test = document.querySelector('myselector');
//do other stuff
});
最佳答案
如您所知,我们无法从外部异步调用中获取变量。这看起来有点老套,但这是我目前最好的......
var baseTargetUrl;
.....
casper.then(function() {
baseTargetUrl = this.evaluate(function() {
return __utils__.getElementByXPath('//*[@id="wrapper"]/div[1]/a[2]')["href"];
});
console.log('logging: '+baseTargetUrl); // works
this.thenOpenAndEvaluate(baseTargetUrl ,function() { // 'this' being the instance of casper
var test = document.querySelector('myselector');
//do other stuff
});
});
关于javascript - 如何在后续调用中重用 casperJS 调用中填充的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20932947/