首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Casper JS运行方法早期开火

Casper JS运行方法早期开火
EN

Stack Overflow用户
提问于 2014-04-12 17:36:13
回答 1查看 101关注 0票数 1

在函数中添加this.echo命令会导致在设置链接之前调用casper.run方法

代码语言:javascript
复制
var casper = require('casper').create();

function getLinks() {
  this.echo("Getting links"); // <--------- This line cause everything to fail
  var links = document.querySelectorAll('table');
  return Array.prototype.map.call(links, function(e) {
    return e.getAttribute('id');
  });
}

var links = [];

casper.start('example.html', function() {
  links = this.evaluate(getLinks);
});

casper.run(function() {
  this.echo(links.length + ' links found:');
  this.echo(' - ' + links.join('\n - ')).exit();
});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-12 18:12:03

从未与casper.js合作过,但来自documentation

作为提醒,可以将evaluate()方法看作是CasperJS环境与您打开的页面之间的一扇门;每次将闭包传递给evaluate()时,您都会输入页面并执行代码,就像使用浏览器控制台一样。

因此,this可能并不是指casper,而是指文档的全局对象。this.echo不存在并引发错误,函数的其余部分没有执行,也没有收集链接。因此,传递给run的回调函数并不是提前执行的,而是收集链接的代码从未运行过。

尝试casper.echo("Getting links");,或者简单地删除调用并将其移动到start

代码语言:javascript
复制
casper.start('example.html', function() {
  this.echo("Getting links");
  links = this.evaluate(getLinks);
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23033856

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档