Javascript 如何将参数/变量传递给casperjs求值函数

Javascript 如何将参数/变量传递给casperjs求值函数,javascript,casperjs,Javascript,Casperjs,传递变量时,我无法使casper evaluate函数工作。当utils.dump(位置)时,下面的代码返回null 下面带有硬编码选择器值的代码正在工作 locations = this.evaluate(function () { var locs = document.querySelectorAll('.job-location'); locs = Array.prototype.map.call(locs, function (loc)

传递变量时,我无法使casper evaluate函数工作。当utils.dump(位置)时,下面的代码返回null

下面带有硬编码选择器值的代码正在工作

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中编写的函数被字符串化并发送给phantomjs,phantomjs将取消序列化并执行它


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

您是否尝试过document.querySelectorAll(selector.selector);语法为
casper.evaluate(callbacl,param1,param2…)
。您必须编写
this.evaluate(…,选择器)。在this.evaluate中编写的函数被字符串化并发送给phantomjs,phantomjs将取消序列化并执行它。该函数无法访问您在“evaluate”方法中未绑定的变量,因为它不是在同一上下文中执行的。非常感谢@pierreemanuellallemant,这很简单,而且工作非常完美!!!我浪费了一上午的大部分时间,不明白为什么这不起作用@彼得我建议你使用一些幻影来理解逻辑。CasperJS确实很有用,但需要phantomjs的理解,否则当您出现错误时,您无法理解原因;)没有日志……太好了。再次感谢。
locations = this.evaluate(function () {
            var locs = document.querySelectorAll('.job-location');
            locs = Array.prototype.map.call(locs, function (loc) {
                return loc.innerText;
            });
            return locs;
        })