使用 PhantomJS 从网站读取 JavaScript 变量
Reading javascript variable from website using PhantomJS
我是Javascript和PhantomJS的新手,但我看似简单的目标已被证明比预期的更难实现。我想编写一个脚本来加载一个网站,然后输出该页面上使用的 Javascript 变量的值。如果我在浏览器中打开该页面并打开 Javascript 控制台,我可以输入变量名称,它会告诉我与该变量关联的值。我只是尝试重现这个函数,但使用 PhantomJS,以便我可以自动执行此任务。
有人可以指出我为此提供正确的文档吗?我一直无法找到如何做这样的事情,假设 PhantomJS 是执行此操作的正确方法。也许有更简单的选择?
谢谢。
你需要了解的是,phantomJS有两个JavaScript环境,这两个环境是相互独立的。内部是文档脚本(在任何浏览器中都有)。外部是控制phantomJS应该做什么。它模拟用户。
所以从某种意义上说,你需要告诉phantomJS"用户打开了JavaScript控制台任何键入...
"。评估命令执行此操作。
因此,要读取变量foo
的值,您可以编写以下代码:
var foo = page.evaluate(function() {
return document.foo;
});
注意:document
不是绝对必要的,但它有助于在开发人员的头脑中将两个环境分开。
Aaron 的回答对我不起作用。也许它在 2013 年有效,但现在(2016 年),它不再适用于当前版本。在 Aaron 的示例中,foo
返回一个承诺,而不是一个值。 console.log(foo)
输出Promise { <pending> }
.
这是我发现的:
page
.evaluate( function(){ return window.foo })
.then ( function(foo){ console.log "foo = ", foo});
现在你真的明白了foo的价值。
相关文章:
- 将函数的上下文应用于javascript变量
- 如何通过ajax刷新JSF填充的javascript变量
- Javascript变量赋值|
- 限制javascript变量的最小/最大整数
- 来自文本输入null的html javascript变量
- 访问jsrender模板中的全局javascript变量并更新它
- 从数据库中获取数据并插入JavaScript变量
- 如何将javascript变量传递到Meteor Spacebars模板中
- 将JavaScript变量保存到Rails模型
- 在if语句下的html中使用javascript变量
- Javascript变量分配-按类别
- 操作javascript变量[HTML]以只显示文本
- 无法比较javascript变量
- 如何将smarty变量与javascript变量进行比较
- 如何使用PHP将javascript变量添加到mysql数据库中
- Javascript 变量使用 jquery 查找变量
- 重新加载页面时Javascript变量发生变化
- 在asp classic中使用javascript变量
- 全局Javascript变量变为null
- 如何向服务器端提交javascript变量