如何将参数/变量传递给 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' 方法中绑定的变量,因为它不是在同一上下文中执行的。
传递变量时我无法让 casper 求值函数工作。 returns 下面的代码在 utils.dump(locations);
时为 nullvar 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' 方法中绑定的变量,因为它不是在同一上下文中执行的。