尝试 运行 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
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