问题标签 [phantomjs]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
node.js - 逐行解析生成的node.js子进程的输出
我有一个 PhantomJS/CasperJS 脚本,我在 node.js 脚本中使用process.spawn()
. 由于 CasperJS 不支持require()
ing 模块,因此我尝试将 CasperJS 中的命令打印到stdout
然后从我的 node.js 脚本中读取它们,spawn.stdout.on('data', function(data) {});
以便执行诸如将对象添加到 redis/mongoose 之类的操作(令人费解,是的,但似乎比为此设置 Web 服务更简单...) CasperJS 脚本执行一系列命令并创建例如 20 个屏幕截图,这些屏幕截图需要添加到我的数据库中。
但是,我不知道如何将data
变量(a Buffer
?)分成几行...我尝试将其转换为字符串然后进行替换,我尝试过spawn.stdout.setEncoding('utf8');
但似乎没有任何效果...
这是我现在拥有的
javascript - 使用 page.evaluate 传递参数
我正在使用 PhantomJS page.evaluate() 进行一些抓取。我的问题是我传递给 webkit 页面的代码是沙盒的,因此无法访问我的主幻像脚本的变量。这使得抓取代码很难通用。
我怎样才能将参数推送到页面中?
flash - 如何使 Flash 与 PhantomJS 一起工作?
我正在使用符合--qt-4.8
.
我无法在 PhantomJS 中启用 Flash。我使用该--load-plugins=yes
选项。我设置了QTWEBKIT_PLUGIN_PATH
所有包含 libflashplayer.so 的路径:
我可以看到strace
PhantomJS 确实找到了libflashplayer.so
:
在同一台服务器上,Flash 可与 Firefox 10.0 完美配合
知道为什么 PhantomJS 不使用 Flash 吗?
javascript - PhantomJS 和 iFrame
我正在使用 phantomjs(1.5) 和casperjs进行功能测试。
所以,我登录了 vk.com(俄罗斯的社交网络),我的应用程序加载了 iframe。
如何在 iFrame 中使用元素,例如单击按钮?
node.js - 如何管理 PhantomJS 实例的“池”
我正在计划一个供我自己在内部使用的 web 服务,它接受一个参数,一个 URL,并返回表示从该 URL解析的DOM 的 html。通过已解决,我的意思是 web 服务将首先获取该 URL 处的页面,然后使用 PhantomJS 来“渲染”页面,然后在执行所有 DHTML、AJAX 调用等之后返回结果源。然而,基于每个请求(我现在正在这样做)启动幻象太慢了。我宁愿拥有一个 PhantomJS 实例池,其中一个始终可以为我的 web 服务的最新调用提供服务。
以前有没有在这种事情上做过任何工作?我宁愿这个 web 服务基于其他人的工作,也不愿从头开始为自己编写一个池管理器/http 代理服务器。
更多上下文:我在下面列出了到目前为止我看到的 2 个类似项目,以及为什么我避开了每个项目,从而导致了这个关于管理 PhantomJS 实例池的问题。
jsdom - 据我所见,它具有在页面上执行脚本的强大功能,但它不会尝试复制浏览器行为,所以如果我将它用作通用“DOM 解析器”,最终会成为处理各种边缘情况、事件调用等的大量额外编码。我看到的第一个示例是必须为我使用 node.js 设置的测试应用程序手动调用 body 标签的 onload() 函数。这似乎是一个深兔子洞的开始。
Selenium - 它只是有更多的移动部件,因此设置一个池来管理长期存在的浏览器实例将比使用 PhantomJS 更复杂。我不需要它的任何宏录制/脚本优势。我只想要一个 Web 服务,它在获取网页和解析它的 DOM 方面的性能就像我用浏览器浏览到那个 URL 一样(或者如果我可以让它忽略图像等甚至更快)
javascript - 使用 PhantomJS 和 node.js 保存和渲染网页
我正在寻找一个请求网页的示例,等待 JavaScript 呈现(JavaScript 修改 DOM),然后抓取页面的 HTML。
这应该是一个简单的示例,具有明显的 PhantomJS 用例。我找不到一个像样的例子,文档似乎都是关于命令行使用的。
parsing - CasperJS:如何设置代理以便 Google Analytics 忽略它
我使用 CasperJS 构建了一个简单的索引器。我希望 Google Analytics 忽略我的代理,因此所有请求都不会成为每天统计数据的一部分。
我应该如何设置 Casper 代理变量(标头)?
ember.js - 使用 guard 和 jasmine 进行无头测试 Ember 应用程序
我正在尝试使用 jasmine 和 guard 为我的 rails 3.2 应用程序测试基于 ember 的前端。为此,我使用 jasminerice 和guard-jasmine,phantomjs。设置非常简单,我可以运行一些示例规范。当谈到玩 ember 时,事情变得很疯狂。我有下面的规范来测试视频阅读器类。调用 loadVideo 方法时,应该将 videoHeight 和 videoWitdh 属性设置为对应的视频 DOM 元素的值。当我在浏览器上运行 jasmine 时,测试通过了,但是当我使用 guard 和 phantomjs 运行它时,它失败了。我得到“期望未定义等于 640”。在 phantomjs 上运行测试时,似乎我的 DOM 元素没有考虑在内。
我的规范写对了吗?
node.js - 将 phantomJS 部署到 node.js 应用程序?
我意识到“在 Heroku 上运行 PhantomJS”是一个相关但略有不同的问题,因为我正在尝试使用节点应用程序。
我在为节点应用程序部署 casperJS(基于 phantomJS)脚本时遇到问题。我尝试通过将 PhantomJS 64 位二进制文件放在我的应用程序/bin
目录中来部署到 Heroku,但是当我尝试运行 PhantomJS 时出现以下错误:
根据我的阅读,这可以通过安装 QtWebKit 库来解决,但 Heroku 没有安装这个。是否有另一个我可以使用的托管服务提供商或者在 Heroku 上安装这个包的方法?
相关代码:
我已经在 Nodester 上注册了 beta 测试,但他们的文档在这一点上仍然非常有限。
编辑:我可以通过简单地将 PhantomJS 的 lib 文件夹复制到我的节点应用程序的根目录来使其工作。
qt - 删除 MacPorts 后,新日期(“YYYY-MM-DD”)在 Qt WebKit 中停止工作
在我的 OS X 10.7.3 (Lion) 笔记本电脑上,我无法使用 Date 构造函数使用 Qt WebKit 解析 JavaScript 日期字符串。使用 jasmine-headless-webkit 或 phantomJS,所有调用都像:
总是回来
而不是有效的 Date 对象。几周前,一切正常,我已经在六台具有类似设置的计算机上进行了检查,并且无法在其他任何地方重现该问题。
我相当肯定,当我决定清理旧的据称未使用的 MacPorts 安装时,问题就开始了(我早就改用 Homebrew 并且正在做一些房屋清洁工作)。我怀疑有一个动态链接库已从我的系统中删除,Qt 将其用于日期解析。
有谁知道这个日期解析库可能被称为什么?知道我是否可以使用 Homebrew 安装它或以某种方式手动修复丢失的依赖项?
我尝试重新安装 Qt 和许多其他库,但没有解决问题。