传递变量时,我无法获得casper evaluate函数。 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;
})
任何人都可以指出我正确的方向。我读了很多帖子,我发现似乎没有任何工作。我有许多使用此评估的不同脚本,所以我真的需要能够传递变量。
感谢您提前获得任何帮助。
答案 0 :(得分:1)
语法是casper.evaluate(callbacl,param1,param2 ...)。
你必须写这个。评估(...,选择器);使用正确的选择器'变量。在this.evaluate中编写的函数被字符串化并发送到phantomjs,它会反序列化并执行它。
该功能无法访问您未在“评估”中绑定的变量。方法,因为它不在同一个上下文中执行。