javascript - 如何在后续调用中重用 casperJS 调用中填充的变量?

标签 javascript casperjs

我在 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/

相关文章:

javascript - 根据数据属性值获取元素数量

javascript - 使用 AngularJS 中的指令将对象存储在 ngModel 中

javascript - 从没有类或 id 的元素中抓取链接 - casperjs

javascript - 我如何关注 casperjs 网址

javascript - 填写非文本类型的输入字段,并在 CasperJS 中触发事件

javascript - 如何使用 jquery 根据请求的 URL 在 slider 中显示特定幻灯片

javascript - 使用 javascript 或 jquery 计算持续时间

javascript - Sencha touch 2.2 中未显示列表

javascript - `querySelectorAll` 没有 't return anything in ` casperjs`

input - CasperJS 清除输入字段