问题标签 [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.

0 投票
1 回答
1000 浏览

javascript - 如何从文档中获取所有图像并存储到本地

我的目标是从文档中获取所有图像,然后将所有大于 150x150px 的图像下载到本地。

我被困在从先前步骤中获得的 URL 中检索文件。这是错误的代码行(完整代码 - 最后):

当我从控制台运行时,它只是挂在 fs.copy() 上,没有任何错误。

据我所知, fs.copy() 不适用于远程 URL,即使您设置了所有正确的参数(--load-images=yes,--local-to-remote-url-access=yes)。我是对的还是我在 copy() 上做错了什么?是否有任何方法可以直接从 webkit 的缓存中获取文件?

获得了最新的 phantomjs 版本和 ubuntu 服务器。

我将不胜感激任何帮助。

完整的脚本代码:

0 投票
1 回答
1442 浏览

javascript - 在 PhantomJS 中从 Ant 运行异步 QUnit 测试

我正在尝试使用PhantomJS从 Ant 构建脚本中运行一组异步 QUnit 测试。我所拥有的似乎正在工作,但似乎应该有更好的方法来实现它。

PhantomJS 加载时运行的脚本(简化)如下:

这将加载包含测试 ( testrunner.html) 的文件。它使用 PhantomJSevaluate方法在加载页面的上下文中运行一些代码。该代码将事件处理程序绑定到 QUnitdone事件。在事件处理程序中,所发生的只是对console.log.

默认情况下, PhantomJS 不对console.log调用执行任何操作,因此我还为 PhantomJSonConsoleMessage事件绑定了一个事件处理程序。当事件处理程序中的console.log调用QUnit.done被执行时,onConsoleMessage事件被触发。如果控制台消息匹配给定的字符串,那么我们知道测试已经完成运行。然后我们可以退出 PhantomJS,退出代码等于失败的单元测试的数量(Ant 脚本使用它来确定这部分构建是否成功)。

我的问题是,有没有更好的方法来找出单元测试何时完成运行?

0 投票
4 回答
21823 浏览

phantomjs - 如何控制 PhantomJS 跳过下载某种资源?

phantomjs 有配置 loadImage,

但我想要更多,

如何控制 phantomjs 跳过下载某种资源,

比如css等...

=====

好消息:已添加此功能。

https://code.google.com/p/phantomjs/issues/detail?id=230

要点:

0 投票
0 回答
373 浏览

iframe - page.content 是如何工作的?

我试图在加载动态内容(例如广告)后获取 HTML 和网站快照。

当我使用渲染功能时,页面会显示 iframe 中的内容,但是当我将内容保存到文件中时,iframe 会重复或出现奇怪的现象,例如消失。

所以我想知道是否有办法保存完整的 DOM(已经加载了所有动态内容,例如 js 或 iframe)。

这是我的代码:

这是一个示例图像输出(iframe 以红色突出显示):

http://dl.dropbox.com/u/123181/prodigy.msn.com.png

这是一个示例 HTML 输出:

http://dl.dropbox.com/u/123181/prodigy.msn.com.html

0 投票
5 回答
38906 浏览

javascript - PhantomJS 支持 cookie 吗?

PhantomJS支持 cookie 吗?如果是,我在哪里可以找到 API 详细信息?

我现在搜索了一段时间后无法弄清楚。

0 投票
1 回答
536 浏览

jasmine - PhantomJs.exe 在 Windows 2008 R2 上抛出“在抛出 'std::bad_alloc' 实例后调用终止”错误

我尝试使用 PhantomJs.exe 从命令行运行我的 jamsine 规范。这是我的命令行

我从我的规范运行器 html 文件所在的文件夹中运行它。上面的命令抛出以下错误

我已经查看了 phantomjs 组上的http://code.google.com/p/phantomjs/issues/detail?id=365但这对像我这样来自 .net 背景的人没有多大帮助。

到目前为止,我发现 PhantomJs 的 1.3.0 版对我来说很好用。

0 投票
1 回答
6784 浏览

node.js - Phantom.js 填写字段,点击提交,现在卡在访问下一页

我从 phantom.js 开始(顺便说一句,我恋爱了)。我正在尝试让无头浏览器转到我的 php 管理面板,使用用户名和密码登录,然后从登录后重定向到的页面中,我想从 div 标签中获取一些文本。

到目前为止,我成功地填充了字段,创建了点击事件,甚至找到了对 div 标签的 DOM 部分的访问并获取了 inner.Text。

对我来说唯一缺少的部分是当 phantom.js 单击一个按钮(在本例中为登录按钮)时该怎么做,这将使我登录并更改页面内容。.click(); 之后我找不到如何处理 事件。

这是我到目前为止制作的代码(顺便说一句,这是一个很好的开始......)

我想在它之后的页面上运行的代码

所以剩下的唯一问题是如何处理重定向并在另一个页面上启动脚本。

谢谢,

0 投票
1 回答
1832 浏览

javascript - PhantomJS 和 pjscrape - 在某些多个 URL 上失败

概述

我正在尝试使用 PhantomJS 和 pjscrape 框架创建一个非常基本的刮板。

我的代码

使用的 URL 数组

第一个数组不起作用,并且在第三个或第四个 URL 之后失败。

这第二个阵列可以工作并且不会失败,即使它来自同一个站点。

问题

当遍历productURLsPhantomJSpage.open可选回调时,自动假定失败。即使页面尚未完成加载。

我知道这一点,因为我在运行 HTTP 调试器时启动了脚本,即使 PhantomJS 报告了页面加载失败,HTTP 请求仍在运行。

但是,使用categoriesURLs.

假设

  1. 上面列出的所有 URL 都是有效的
  2. 我有最新版本的 PhantomJS 和 pjscrape

可能的解决方案

这些是我迄今为止尝试过的解决方案。

  1. 禁用图像加载page.options.loadImages = false
  2. 设置较大显然没有用,因为生成的错误是timeoutInterval失败而不是超时失败。pjs.configpage.open

有任何想法吗?

0 投票
1 回答
1689 浏览

javascript - 使用 PhantomJS 注入和使用 Firebug-Lite

我正在尝试使用 PhantomJS 将 Firebug 和 jQuery 注入网页,但我无法访问它们。

我已经尝试了两种 PhantomJS 方法来将其他 JS 添加到页面:page.injectJs() 和 page.includeJs。

我无法从 includeJs 中得到任何返回(通过阅读文档,我没想到会得到)。

在我 injectJs() 并尝试使用 firebug-lite 和 jQuery 函数或对象(如 $ 和 inspect() )后,我收到错误消息说它们未定义或找不到变量。

这是我的完整脚本。你也可以在这里看到它:http: //piratepad.net/XTPefXOB4o

这是我的输出:

0 投票
2 回答
11637 浏览

javascript - PhantomJs 点击链接或运行页面功能

我刚刚习惯了 PhantomJs,到目前为止它真的很酷。

我正在尝试抓取一个网站并获取有关该网站上产品的数据。每个产品页面都以可见产品的默认颜色加载。当您单击颜色样本时,它会通过运行函数来交换新颜色。每个可点击的色样元素如下所示:

getColor 更新该颜色的缩略图和价格。每个可用颜色(swatch_0、swatch_1 等)的 id 递增,传递给 getColor 的参数也递增。我想用 PhantomJs 遍历每种颜色并为每种颜色提取相关数据。

我已经加载了页面,加载了 jQuery,并且可以为初始加载的颜色提取数据,但似乎没有什么可以让我执行点击事件。

这是我正在尝试的:

这给了我:

没有其他代码运行。我也尝试过在没有 jQuery 的情况下触发事件,如下所示:

并直接运行该功能:

我得到相同的输出。任何帮助表示赞赏。