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

时间:2017-06-09 12:19:06

标签: javascript casperjs

传递变量时,我无法获得casper evaluate函数。 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;
        })

任何人都可以指出我正确的方向。我读了很多帖子,我发现似乎没有任何工作。我有许多使用此评估的不同脚本,所以我真的需要能够传递变量。

感谢您提前获得任何帮助。

1 个答案:

答案 0 :(得分:1)

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

你必须写这个。评估(...,选择器);使用正确的选择器'变量。在this.evaluate中编写的函数被字符串化并发送到phantomjs,它会反序列化并执行它。

该功能无法访问您未在“评估”中绑定的变量。方法,因为它不在同一个上下文中执行。