如何将参数/变量传递给 casperjs 评估函数

How to pass a parameter / variable to casperjs evaluate function

传递变量时我无法让 casper 求值函数工作。 returns 下面的代码在 utils.dump(locations);

时为 null
var selectors = {

    locationSelector: ".job-location",
    nextPage: '.next'
}

locations = this.evaluate(function (selector) {
            var locs = document.querySelectorAll(selector);
            locs = Array.prototype.map.call(locs, function (loc) {
                return loc.innerText;
            }, { selector: selectors.locationSelector });
            return locs;
        })

下面带有硬编码的选择器值的代码正在运行...

locations = this.evaluate(function () {
            var locs = document.querySelectorAll('.job-location');
            locs = Array.prototype.map.call(locs, function (loc) {
                return loc.innerText;
            });
            return locs;
        })

谁能给我指出正确的方向。我已经阅读了很多帖子,但我发现似乎没有任何效果。我有许多使用此评估的不同脚本,所以我真的需要能够传入变量。

提前感谢您的帮助。

语法是casper.evaluate(callbacl, param1, param2 ...)。

你必须写 this.evaluate(..., selector);使用正确的 'selector' 变量。 this.evaluate 中编写的函数被字符串化并发送给 phantomjs,它反序列化并执行它。

该函数无法访问您未在 'evaluate' 方法中绑定的变量,因为它不是在同一上下文中执行的。