Articles of casperjs

将phantomJS部署到node.js应用程序?

我意识到“在Heroku上运行PhantomJS”是一个相关但略有不同的问题,因为我正在尝试使用节点应用程序。 我在为节点应用程序部署casperJS(基于phantomJS)脚本时遇到问题。 我已经尝试通过将PhantomJS 64位二进制文​​件放入我的应用程序的/bin目录来尝试部署到Heroku,但是当我尝试运行PhantomJS时遇到以下错误: phantomjs: error while loading shared libraries: libQtWebKit.so.4: cannot open shared object file: No such file or directory 从我读过这可以通过安装QtWebKit库解决,但Heroku没有安装。 是否有另一个托pipe服务提供商可以使用,或者在Heroku上安装这个软件包? 相关代码: app.get('/', function(request, response) { var sys = require('sys') var exec = require('child_process').exec; var child; //works but gives error while loading shared library libqtwebkit.so.4 child = exec("phantomjs –version | tr -d '\n'", […]

Phantom.js / Casper.js与旋转代理?

我有一个简单的目标:加载网页与phantom.js (开箱)或casper.js (好,更容易),但使用代理,并从列表中旋转它 ,如果目前的一个坏(即网页加载失败或类似的东西那)。 我知道casper.js有–proxy参数,但它决定了用户只能指定一个代理并在运行时使用它。 问题1是:如何以编程方式轮播代理? 我做了一些研究,发现这个节点请求者,但它没有与casper.js集成。 我试图在代码中提取出代理function,但并没有真正理解它是如何工作的(我不是很聪明,我猜)。 所以问题2:是否有一些代理旋转的简单实现可以与phantom.js或casper.js ? 我更喜欢使用花式的casper.js但是也会用phantom.js 。

如何在CasperJS中打开一个新标签

我现在使用CasperJStesting框架做了一些testing套件,但是我正面临着一个问题。 这是我想要做的:我正在浏览一个url(page1),我不得不从另一个url(模拟一个新的选项卡,就像我们在graphics浏览器中所做的),而不必退出第一个(page1)的另一个动作。 从第二个url的行动将改变我的第一个。 希望这是清楚的:) 所以现在当我到达第一个url的时候,我打开第二个url,通过执行一个thenOpen() ,所以这是一个新的导航步骤,我失去了当前的会话,我不能回头。 我尝试了许多方法,例如使用历史logging,重新打开页面,使用CasperJS中的事件,还尝试使用PhantomJS,但没有成功。 下面是一些伪代码,使其更清晰: casper.test.begin("A random test suite", 0, function testSuite(test) { casper.start(url1, function () { casper.then(function() { // do some action on the first url }); casper.then(function () { // open url2 and do some action in a new tab to not lose the session of url1 }); casper.then(function () […]

CasperJS,并行浏览与testing框架

问题:我想知道是否有可能在一个脚本文件中使用testing框架进行并行浏览,所以使用tester模块和casperjstesting命令。 我见过一些人创build了两个casper实例: CasperJS同时请求和https://groups.google.com/forum/#!topic/casperjs/Scx4Cjqp7hE ,但正如文档中所述,我们不能创build新的casper实例在一个testing脚本。 所以我试着做一个类似的简单的例子 – 一个caspertesting脚本(只需复制并执行这个工作): var url1 = "http://casperjs.readthedocs.org/en/latest/testing.html" ,url2 = "http://casperjs.readthedocs.org/en/latest/testing.html" ; var casperActions = { process1: function () { casper.test.begin('\n********* First processus with our test suite : ***********\n', function suite(test) { "use strict"; casper.start() .thenOpen(url1,function(){ this.echo("1","INFO"); }); casper.wait(10000,function(){ casper.test.comment("If parallel, it won't be printed before comment of the second processus !"); […]

如何编写自己的CasperJS模块?

例如,我有一个经常需要执行的步骤,例如用户在一些testing之前login。 如何为CasperJS编写可重用的代码块? 他们扩展CasperJS的文档只写成一个文件。 谢谢!

如何获得casper.js http.status代码?

我有以下简单的代码: var casper = require("casper").create({ }), utils = require('utils'), http = require('http'), fs = require('fs'); casper.start(); casper.thenOpen('http://www.yahoo.com/', function() { casper.capture('test.png'); }); casper.on('http.status.404', function(resource) { this.echo('wait, this url is 404: ' + resource.url); }); casper.run(function() { casper.exit(); }); 有没有办法赶上http.status代码,不pipe它是什么? 现在我可以在文档中看到如何捕捉特定的代码事件。 如果我只想看看它是什么呢?

使用casperjs中的节点模块

是否可以安装通过npm安装的节点模块,然后从casperjs脚本中获取? (我看到很多post和工具,用于在node.js中运行casper或phantom,但这不是我想要做的。) casperjs文档似乎说这是可能的,但只能用手写的玩具模块来展示,而这些模块并不真正做任何事情。 我试图安装的真实世界的模块是imap ,但在这一点上,我不能得到任何模块的工作,即使内置的net 。 简单的例子: npm install imap echo "var test = require('imap');" > test.js casperjs test.js 给我: CasperError: Can't find module imap /usr/local/src/casperjs/bin/bootstrap.js:263 in patchedRequire test.js:1 (我可以从npm ls看到imap模块,我可以从node.js脚本中使用它)。 或者使用内置模块: echo "var test = require('net');" > test.js casperjs test.js 抱怨“找不到模块网” 我有npm –version 1.4.14和nodejs –version v0.10.29。 那些太旧了,我想知道? (Casper是1.1.0-beta,Phantom是1.9.7,两者都是最新版本。)

SlimerJS extensions.getAddons.cache.enabled

我遇到了一个通过CasperJS运行SlimerJS的问题,我得到了下一条消息“ 1414441945905 addons.repository WARN cacheEnabled:无法获得pref:extensions.getAddons.cache.enabled” 。 我有一个与CasperJS和Slimer(0.9.3)一起运行的nodejs scrapper作为引擎。 这个过程由另一个进程执行(作为一个child_process.spawn)。 此外,这个过程是与PM2预定。 它运行正常,但有时会抛出这个错误,它挂断了,有什么想法?

在CasperJS里面的文件IO

是否有可能在CasperJS脚本中读/写文件? var fs = require('fs'); var data = fs.readFileSync('testdata.data', 'utf-8'); console.log(data); 调用casperjs fileio.js返回: 'undefined' is not a function 即使在运行npm install fs 。 奖励点如果不是:解释为什么?

如何在不同的casperjs进程之间保持cookie

这是一个关于如何将cookies从一个casperjs页面保存到另一个页面的问题。 所以基本上我有一个nodejs文件,产生casperjs作为一个工人来做某些任务..一个是login,一旦login,我将cookie存储在一个文件中。 当我产卵下一个casper工人..我希望它使用cookie,而不必再次login..这两个方法失败 : 第一:当我产卵的工人capserjs我添加–cookies文件=。/ cookiefilename即var child = spawn('casperjs',['scrape.js','–cookies-file=./'+cookieFileName]); 第二:在casperjs工作人员文件..我让它读取和设置从一个文件的cookie即 var casper = require('casper').create(); var cookieFileName = 'monsterCookie.txt'; // grab cookies from file var fs = require('fs'); var utils = require('utils'); var cookies = fs.read(cookieFileName); casper.page.setCookies(cookies); casper.start('domain/page.html', function() { //FAIL! cookies aren't used here this.debugHTML(); }); casper.run(); 笔记: 前面已经提到 , start从页面中删除cookies? 如果是的话,我该如何防止呢? 我知道会话在相同的phantomjs页面对象(参见https://gist.github.com/abbood/5347252 )中保持不变,在同一个casperjs页面对象中也是如此(请参阅https://gist.github.com/ abbood […]