尝试 运行 Phantomjs 时出错

Error when trying to run Phantomjs

phantom.casperPath +('/Users/AustinJ/Desktop/streakscraper/node_modules/casperjs');
    phantom.injectJs = (phantom.caperPath + '/Users/AustinJ/Desktop/streakscraper/node_modules/casperjs/bin/bootstrap.js');

    var utils = require('smx-casper-utils');

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

    casper.userAgent('Chrome/58.0.3029.81');


    casper.start('http://streak.espn.com/en/').viewport(1200, 1000);

    var x = require('casper').selectXPath;

    casper.start('http://streak.espn.com/en/entry').viewport(1200, 1000);

    casper.wait(3000, function() {
      casper.capture('test1.jpg');
      casper.click(x('//*[@id="matchupDiv"]'));
    });

    casper.wait(3000, function() {
      casper.capture('test2.jpg');

    });

    casper.run();

更新:没有错误 - 这是正确的代码。出于某种原因,当我在终端中 运行 casperjs click.js 时,它可以工作,而不是使用 phantomjs click.js。希望这可以帮助 运行 遇到此问题的任何其他人。

您的新错误可能与此问题有关:https://github.com/ariya/phantomjs/issues/14211

编辑: 以下是指提问者发布但随后删除的先前错误。

你确定你安装了casper模块吗?

确保在 "dependencies" 下的 package.json 中指定了 casper,然后在工作目录中尝试 npm rebuild

您可能还想考虑为您的 casperPath 使用 require('fs').workingDirectory 而不是硬编码,以防您移动目录。

您可能知道,您可以将 CasperJS 用于不同的目的,例如简单的浏览器自动化、功能测试或网络抓取。

根据您想要执行的操作,您的 CasperJS 脚本的结构可能会有所不同,您必须在终端中 运行 的命令也可能会有所不同。

例如,如果您创建一个测试脚本,它应该如下所示:

casper.test.begin('Test my GitHub repos', function (test) {
    casper.start('https://github.com/Badacadabra', function () {
        test.assertVisible('.pinned-repos-list');
    });

    casper.then(function () {
        this.click('a[href$="repositories"]');
    });

    casper.waitForSelector('#user-repositories-list', function () {
        test.assertVisible('.js-repo-list');
        test.assertSelectorHasText('a[href$="Vimpressionist"]', 'Vimpressionist');
    });

    casper.then(function () {
        this.click('a[href$="hello-js-world"]');
    });

    casper.waitForSelector('#js-repo-pjax-container', function () {
        test.assertVisible('a[href$="LICENSE"]');
        test.assertUrlMatch(/^.*github.*$/);
        test.assertDoesntExist('.xyz');
        test.assertSelectorHasText('article', 'hello-js-world');
    });

    casper.run(function() {
        test.done();
    });
});

要调用此脚本,您必须使用casperjs test script.js。如果你用casperjs script.js,就不行了。

我在尝试重现您的问题时遇到此错误。可能的原因是:-

1) require('casper').create() 没有创建所需的对象。请检查casperjs是否安装,路径是否正确

2) 检查chrome 或系统中安装的其他浏览器版本

我在 windows。我已将版本更改为 57.0.2987.98。转到 chrome 安装目录并检查版本。在 windows.

上是这样的
C:\Program Files (x86)\Google\Chrome\Application

我猜你没有使用 windows。您可能需要在 mac.

上做类似的事情

我在 windows 上的工作版本是这样的。

phantom.casperTest = true;
console.log(require('fs').workingDirectory);
phantom.casperPath = require('fs').workingDirectory + '\node_modules\casperjs';
phantom.injectJs(phantom.casperPath + '\bin\bootstrap.js');

var utils = require('smx-casper-utils');

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

casper.userAgent('Chrome/57.0.2987.98');

运行代码:-

phantomjs yourfilename.js