我正在编写一个使用新的es6 promises的JavaScript库.我可以在Firefox中测试库,因为已经定义了promises.但是,当我尝试使用Karma和PhantomJS测试我的代码时,我收到错误Can't find variable: Promise..我猜这是因为PhantomJS浏览器还不支持es6承诺.
如何配置Karma为承诺引入polyfill?
我遵循了这些说明(除了将可执行文件复制到我的PATH,因为我似乎无法找到它并且似乎没有必要).然后我在我的公共javascripts目录中创建了一个名为image_render.js的文件
console.log('Hello, world!');
phantom.exit();
Run Code Online (Sandbox Code Playgroud)
在里面,保存它,并phantomjs render_image.js在我的终端中运行.但是,我的终端无法识别命令:
-bash: phantomjs: command not found
Run Code Online (Sandbox Code Playgroud)
我做错了什么?
我正在阅读Selenium WebDriver的文档,例如它可以驱动Chrome.我在想,"驾驶"PhantomJS会不会更有效率?
有没有办法使用Selenium和PhantomJS?
我的预期用途是网页抓取:我抓的网站加载了AJAX和许多可爱的JavaScript,我认为这个设置可能是我正在使用的Scrapy Python框架的一个很好的替代品.
我知道CasperJS网站上有一篇关于如何在Windows上安装CasperJS的文档,但请注意这些人只是为专业人士解释的.
如果你是所有这些CasperJS和PhantomJS世界的新手,你就没有机会理解甚至花两天时间试图搜索网络以获得更好的解释.
我正在开发一个项目,需要我项目网站上列出的每个网站的屏幕截图,环顾四周我发现PhantomJS对于这个任务非常棒(网站截图).
我下载了PhantomJS并粘贴了我用来发送命令时运行良好的phantomjs.exe文件.system32cmd.exe
我甚至设法抓住phantomjs.exe唯一的屏幕截图.但是当我注意到这两个工作(CasperJS和PhantomJS)时工作量可能会更容易,因为我甚至能够在使用CasperJS时减小屏幕截图的大小,我的问题就来了.
事实上,我想要CasperJS的唯一用途是限制镜头大小但是从昨天开始我一直试图弄清楚如何让CasperJS在Windows上运行但却无济于事.
我已经下载了CasperJS并试图以多种方式安装它,也试图按照文档但没有任何东西.
我将CasperJS文件夹名称从其下载名称更改为CasperJS,如文档所示,但是当我检查cmd尝试调用某些命令时,没有任何反应.
无论如何要剪切故事镜头可以任何人帮我简单地考虑到我是一个新手来解释如何在窗口上安装CasperJS或者如果可能的话只用PhantomJS我怎么能重新调整程序产生的大小让我说如果我想要一个960到400px.
我正在尝试使用PhantomJS设置远程调试,没有太多运气.我按照https://github.com/ariya/phantomjs/wiki/Troubleshooting上的说明进行操作.我有一个名为的小程序debug.js:
var system = require('system' ), fs = require('fs'), webpage = require('webpage');
(function(phantom){
var page=webpage.create();
function debugPage(){
console.log("Refresh a second debugger-port page and open a second webkit inspector for the target page.");
console.log("Letting this page continue will then trigger a break in the target page.");
debugger; // pause here in first web browser tab for steps 5 & 6
page.open(system.args[1]);
page.evaluateAsync(function() {
debugger; // step 7 will wait here in the second web browser tab
}); …Run Code Online (Sandbox Code Playgroud) 我想在node.js中使用CasperJS.
我已经引用了以下URL来在node.js中使用CasperJS:
在上述URL的帮助下,我编写了以下代码:
//DISPLAY=:0 node test2.js
var phantom = require('phantom');
console.log('Hello, world!');
phantom.create(function (ph) {
ph.casperPath = '/opt/libs/casperjs'
ph.injectJs('/opt/libs/casperjs/bin/bootstrap.js');
var casper = require('casper').create();
casper.start('http://google.fr/');
casper.thenEvaluate(function (term) {
document.querySelector('input[name="q"]').setAttribute('value', term);
document.querySelector('form[name="f"]').submit();
}, {
term: 'CasperJS'
});
casper.then(function () {
// Click on 1st result link
this.click('h3.r a');
});
casper.then(function () {
console.log('clicked ok, new location is ' + this.getCurrentUrl());
});
casper.run();
});
Run Code Online (Sandbox Code Playgroud)
当我运行此代码时,我收到以下错误:
错误味精:
tz@tz-ubuntu:/opt/workspaces/TestPhantomjs$ DISPLAY=:0 node test2.js
Hello, world!
Error: Cannot find module 'casper'
at Function._resolveFilename (module.js:332:11)
at …Run Code Online (Sandbox Code Playgroud) 是否可以从字符串创建页面?
例:
html = '<html><body>blah blah blah</body></html>'
page.open(html, function(status) {
// do something
});
Run Code Online (Sandbox Code Playgroud)
我已经尝试了以上没有运气....
此外,我认为值得一提的是我正在使用带有phantomjs-node的nodejs(https://github.com/sgentle/phantomjs-node)
谢谢!
我试图用PhantomJS(版本1.9.2)打开一个本地HTML文件:
var page = require('webpage').create(), fs = require('fs'),
address = "/Full/Path/To/test.html";
console.log('isFile? ' + fs.isFile(address));
console.log('isReadable? ' + fs.isReadable(address));
page.open(address, function(status){
console.log('status? ' + status);
console.log(page.content)
phantom.exit();
});
Run Code Online (Sandbox Code Playgroud)
首先,我检查是否有正确的路径,如果文件是可读的使用fs.isFile()&fs.isReadable().然后我检查phantomjs是否成功打开文件(with status).独立于文件的实际内容我总是得到:
isFile? true
isReadable? true
status? fail
<html><head></head><body></body></html>
Run Code Online (Sandbox Code Playgroud)
所以文件和路径似乎没问题 - 但PhantomJS无法打开它!有什么建议?
PhantomJS是否支持cookie?如果是,我在哪里可以找到API详细信息?
现在搜索一段时间后,我无法弄明白.
我们正在选择我们的无头浏览器驱动程序解决方案,这将是Selenium WebDriver的一些实现.还有就是GhostDriver,利用的是PhantomJS在在一侧和后端HtmlUnitDriver其基于的HtmlUnit另一方.
PhantomJS使用Safari的渲染引擎WebKit来渲染页面,而HtmlUnitDriver使用其他浏览器没有使用的Rhino引擎(它只是"模拟"浏览器行为.最后一个事实被视为con,因为渲染行为可能与流行的浏览器.
我们认为,PhantomJS是一个更强大的候选人.但是,我们并不知道所有事情:)我们的决定是否还应考虑其他因素和权衡取舍?HtmlUnitDriver可以成为更好的解决方案的其他场景?
htmlunit phantomjs selenium-webdriver ghostdriver htmlunit-driver
phantomjs ×10
javascript ×4
node.js ×2
casperjs ×1
cookies ×1
debugging ×1
es6-promise ×1
ghostdriver ×1
htmlunit ×1
karma-mocha ×1
karma-runner ×1
selenium ×1
web-scraping ×1
webdriver ×1
windows ×1