问题标签 [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 - 单击带有 phantom.js 的链接并检索文档 html
我是 phantom.js 的新手,我正在尝试在网站页面上导航,点击带有 phantom.js 的链接(调用 AJAX 函数并更改文档 HTML)。
这是我的代码:
我很困惑,因为在我的“动作”函数中,click() 调用会引发该错误重复 3 次:
TypeError: 'undefined' 不是函数
phantomjs://webpage.evaluate():3 phantomjs://webpage.evaluate():1
ph.js:121 nullTypeError: 'undefined' 不是函数
phantomjs://webpage.evaluate():3 phantomjs://webpage.evaluate():1
ph.js:121 nullTypeError: 'undefined' 不是函数
phantomjs://webpage.evaluate():3 phantomjs://webpage.evaluate():1
ph.js:121 null
此外,如果我在发送点击时评论该行,则操作函数不会再引发错误并很好地返回“点击”控制台日志。但是3次...
我究竟做错了什么 ?
提前致谢。
javascript - PhantomJS 不发送身份验证标头
我正在尝试在 PhantomJS 中打开一个需要 HTTP 身份验证的网页。我的脚本基于 loadspeed.js 示例:
我可以从渲染的 page.jpg 中看到我每次都得到 401。我还使用 Wireshark 跟踪了 HTTP 会话,这表明在 GET 请求中没有向给定 URL 发送任何身份验证标头。
我在这里做错了什么?我刚开始使用 PhantomJS,但我整个晚上都在搜索,但没有走远......
javascript - 函数调用一次,但触发多次
以下是 PhantomJS 脚本的片段。它跟踪 AJAXd 网页上的动态内容。track() 被调用一次,但由于某种原因 page.open() 被调用了 3 次
将以下内容记录到控制台:
出于某种原因,我无法弄清楚, page.open() 被调用了 3 次。
javascript - phantomjs 的受控异步退出
我正在尝试使用 phantomjs 进行一些测试......基本上我想:
- 在我的网络服务器上打开一个页面
- 页面初始化后(所有页面 js 已加载)
- 从phantomjs调用页面js并测试结果
- 退出 phantomjs
phantomjs 似乎很难注意到页面何时加载。
我可以使用 phantomjs 在窗口或其他东西上设置一个“测试”变量,以便页面 js 可以检查它,然后在完成后调用回调。问题是回调只能是页面回调,所以它不能做任何页面不能做的事情。
这对苔丝来说可能没问题,但最后一步是不可能的。
我想出了这个:
所以页面代码可以调用window.quit(),然后控制台监视器可以杀死幻影。不过,这似乎有点 hacky。有没有人有更好的方法呢?
javascript - 纯 JS 的 jQuery ":contains()" 模拟
我正在为 CasperJS 编写脚本。我需要单击包含“1”跨度的链接。在 jQuery 中可以使用:contains('1')
,但纯 Javascript 中的选择器的解决方案是什么?
HTML:<a class="swchItem"><span>1</span></a><a class="swchItem"><span>2</span></a>
jQuery 变体:$('a .swchItem span:contains("1")')
UPD CasperJS 代码:
phantomjs - 将 PhantomJS 调用中的变量暴露给 injectJS
我遵循了从入门页面注入 jQuery 的示例,并且效果很好。我在同一目录中有 jQuery 的本地副本,并执行类似...
当我尝试注入自己的脚本时,没有任何功能可供我使用。假设我有一个名为 myScript.js 的脚本
然后我不能使用 doSomething 之类的...
我试过了
和
也没有运气,以及尝试在随后的 page.evaluate() 中使用 window.doSomething() 或 document.doSomething() 调用它们。
jquery - 使用 PhantomJS 将 JQuery 注入 Amazon.com 页面会导致 JQuery 出现问题
我正在打开 Amazon.com 域中的任何页面(例如“http://www.amazon.com”),然后尝试像这样注入 JQuery:
此代码将打印true
到控制台。但是,尝试像这样$(document)
从内部访问page.evaluate()
:
将打印TypeError: 'undefined' is not a function
到控制台。
此代码适用于我尝试过的大多数其他域。我注意到亚马逊似乎有自己加载的 JQuery 版本,我想知道它是否可能与我正在加载的 JQuery 版本冲突。有任何想法吗?
mongodb - 如何使用 PhantomJS 连接到 MongoDB
我正在运行 OSX。以为我可以在某处找到文档,但找不到。
dom - 使用 phantomjs 或其他东西挖掘/抓取/Web 控制台?
我想创建一个应用程序,其行为与另一个 Web 应用程序的行为直接相关。本质上,在 Gmail 中运行的应用程序会根据用户的操作与界面进行动态交互。
我遇到的问题是我想制作一个与该 Web 应用程序交互的应用程序,但它们不提供开放 API。因此,我不能只为我需要的数据调用 api。
当我在 chrome 中打开开发控制台时,我可以看到正在运行的应用程序,以及基于活动运行的调试注释。
有什么方法可以让我使用 PhantomJS 之类的东西来抓取动态活动,以基于另一个应用程序的活动。
“如果控制台在命令控制台中显示“X”,请在此其他应用程序中运行“Z”脚本。”
我显然不是工程师,但想知道这样的事情是否可行。
处理封闭 API 的一种非常 hacky 的方式。我看不到您的代码或使用它,但如果我可以看到它工作,我可以实时记录并在另一个应用程序中与之交互似乎不合逻辑吗?
coffeescript - 多个页面的 PhantomJS 意外加载行为
我有一个脚本(如下),它通过 3 个步骤来抓取网站。一次最多设置为 1 页时效果很好。但是,当我一次将其增加到 2 时,事情开始变得不稳定。onFinished 比我预期的更早触发,并且页面尚未完全加载。因此,我的脚本的其余部分中断了。知道为什么会发生这种情况吗?我应该补充一点,我正在使用最新版本(1.5)。