问题标签 [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.
javascript - 如何从文档中获取所有图像并存储到本地
我的目标是从文档中获取所有图像,然后将所有大于 150x150px 的图像下载到本地。
我被困在从先前步骤中获得的 URL 中检索文件。这是错误的代码行(完整代码 - 最后):
当我从控制台运行时,它只是挂在 fs.copy() 上,没有任何错误。
据我所知, fs.copy() 不适用于远程 URL,即使您设置了所有正确的参数(--load-images=yes,--local-to-remote-url-access=yes)。我是对的还是我在 copy() 上做错了什么?是否有任何方法可以直接从 webkit 的缓存中获取文件?
获得了最新的 phantomjs 版本和 ubuntu 服务器。
我将不胜感激任何帮助。
完整的脚本代码:
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 脚本使用它来确定这部分构建是否成功)。
我的问题是,有没有更好的方法来找出单元测试何时完成运行?
phantomjs - 如何控制 PhantomJS 跳过下载某种资源?
phantomjs 有配置 loadImage,
但我想要更多,
如何控制 phantomjs 跳过下载某种资源,
比如css等...
=====
好消息:已添加此功能。
https://code.google.com/p/phantomjs/issues/detail?id=230
要点:
iframe - page.content 是如何工作的?
我试图在加载动态内容(例如广告)后获取 HTML 和网站快照。
当我使用渲染功能时,页面会显示 iframe 中的内容,但是当我将内容保存到文件中时,iframe 会重复或出现奇怪的现象,例如消失。
所以我想知道是否有办法保存完整的 DOM(已经加载了所有动态内容,例如 js 或 iframe)。
这是我的代码:
这是一个示例图像输出(iframe 以红色突出显示):
http://dl.dropbox.com/u/123181/prodigy.msn.com.png
这是一个示例 HTML 输出:
javascript - PhantomJS 支持 cookie 吗?
PhantomJS支持 cookie 吗?如果是,我在哪里可以找到 API 详细信息?
我现在搜索了一段时间后无法弄清楚。
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 版对我来说很好用。
node.js - Phantom.js 填写字段,点击提交,现在卡在访问下一页
我从 phantom.js 开始(顺便说一句,我恋爱了)。我正在尝试让无头浏览器转到我的 php 管理面板,使用用户名和密码登录,然后从登录后重定向到的页面中,我想从 div 标签中获取一些文本。
到目前为止,我成功地填充了字段,创建了点击事件,甚至找到了对 div 标签的 DOM 部分的访问并获取了 inner.Text。
对我来说唯一缺少的部分是当 phantom.js 单击一个按钮(在本例中为登录按钮)时该怎么做,这将使我登录并更改页面内容。.click(); 之后我找不到如何处理 事件。
这是我到目前为止制作的代码(顺便说一句,这是一个很好的开始......)
我想在它之后的页面上运行的代码
所以剩下的唯一问题是如何处理重定向并在另一个页面上启动脚本。
谢谢,
javascript - PhantomJS 和 pjscrape - 在某些多个 URL 上失败
概述
我正在尝试使用 PhantomJS 和 pjscrape 框架创建一个非常基本的刮板。
我的代码
使用的 URL 数组
第一个数组不起作用,并且在第三个或第四个 URL 之后失败。
这第二个阵列可以工作并且不会失败,即使它来自同一个站点。
问题
当遍历productURLs
PhantomJSpage.open
可选回调时,自动假定失败。即使页面尚未完成加载。
我知道这一点,因为我在运行 HTTP 调试器时启动了脚本,即使 PhantomJS 报告了页面加载失败,HTTP 请求仍在运行。
但是,使用categoriesURLs
.
假设
- 上面列出的所有 URL 都是有效的
- 我有最新版本的 PhantomJS 和 pjscrape
可能的解决方案
这些是我迄今为止尝试过的解决方案。
- 禁用图像加载
page.options.loadImages = false
- 设置较大显然没有用,因为生成的错误是
timeoutInterval
失败而不是超时失败。pjs.config
page.open
有任何想法吗?
javascript - 使用 PhantomJS 注入和使用 Firebug-Lite
我正在尝试使用 PhantomJS 将 Firebug 和 jQuery 注入网页,但我无法访问它们。
我已经尝试了两种 PhantomJS 方法来将其他 JS 添加到页面:page.injectJs() 和 page.includeJs。
我无法从 includeJs 中得到任何返回(通过阅读文档,我没想到会得到)。
在我 injectJs() 并尝试使用 firebug-lite 和 jQuery 函数或对象(如 $ 和 inspect() )后,我收到错误消息说它们未定义或找不到变量。
这是我的完整脚本。你也可以在这里看到它:http: //piratepad.net/XTPefXOB4o
这是我的输出:
javascript - PhantomJs 点击链接或运行页面功能
我刚刚习惯了 PhantomJs,到目前为止它真的很酷。
我正在尝试抓取一个网站并获取有关该网站上产品的数据。每个产品页面都以可见产品的默认颜色加载。当您单击颜色样本时,它会通过运行函数来交换新颜色。每个可点击的色样元素如下所示:
getColor 更新该颜色的缩略图和价格。每个可用颜色(swatch_0、swatch_1 等)的 id 递增,传递给 getColor 的参数也递增。我想用 PhantomJs 遍历每种颜色并为每种颜色提取相关数据。
我已经加载了页面,加载了 jQuery,并且可以为初始加载的颜色提取数据,但似乎没有什么可以让我执行点击事件。
这是我正在尝试的:
这给了我:
没有其他代码运行。我也尝试过在没有 jQuery 的情况下触发事件,如下所示:
并直接运行该功能:
我得到相同的输出。任何帮助表示赞赏。