CasperJS的示例代码不起作用

时间:2018-05-04 11:26:36

标签: javascript casperjs

var casper = require('casper').create();
var links;

function getLinks() {
// Scrape the links from top-right nav of the website
var links = document.querySelectorAll('ul.navigation li a');
return Array.prototype.map.call(links, function (e) {
    return e.getAttribute('href')
});
}

// Opens casperjs homepage
casper.start('http://casperjs.org/');

casper.then(function () {
links = this.evaluate(getLinks);
});

casper.run(function () {
for(var i in links) {
    console.log(links[i]);
}
casper.done();
});

我收到了与casper.start()相关的错误,因此我测试了源代码,预计如果我的计算机与http://casperjs.org/中发布的其他普通计算机没有什么不同,它会正常工作。

但是我收到了错误消息:casper.start() is not function

我听说如果我在CasperJS中运行 selftest.js ,我可以看到问题所在。

所以我跑了,结果是:ReferenceError: patchRequire is not defined

我认为CasperJS文件有问题。

1 个答案:

答案 0 :(得分:1)

我运行了您的程序,并且还收到了错误消息。

进行适当的修改后,以下代码将按预期工作:

var casper = require('casper').create();

function getLinks () {
  // Scrape the links from top-right nav of the website
  var links = document.querySelectorAll('ul.navigation li a');

  return Array.prototype.map.call(links, function (e) {
    return e.getAttribute('href');
  });
}

// Opens CasperJS homepage
casper.start('http://casperjs.org/');

casper.then(function () {
  var links = this.evaluate(getLinks);

  for (var i in links) {
    this.echo(links[i]);
  }
});

casper.run();

如果进行这些更改后仍然出现错误,建议您使用Official Installation Guide重新安装CasperJS(可能还包括PhantomJS)。