使用PhantomJS从网站上读取javascript变量

Gle*_*lig 5 javascript variables phantomjs

我是Javascript和PhantomJS的新手,但我看起来很简单的目标已经证明比预期更难实现.我想编写一个加载网站的脚本,然后输出该页面上使用的Javascript变量的值.如果我在浏览器中打开该页面并打开Javascript控制台,我可以输入变量名称,它会告诉我与所述变量相关的值.我只是尝试使用PhantomJS重现此功能,以便我可以自动执行此任务.

有人能指出我正确的文件吗?假设PhantomJS是正确的方法,我无法找到如何做这样的事情.也许有一个更简单的选择?

谢谢.

Aar*_*lla 16

您需要了解的是,phantomJS有两个 JavaScript环境,这两个环境相互独立.内部文件是文档脚本(在任何浏览器中都有).外面的一个是控制phantomJS应该做什么.它模拟用户.

所以从某种意义上说,你需要告诉phantomJS"用户打开任何类型的JavaScript控制台...".该评估命令执行此操作.

因此,要读取变量的值foo,请编写以下代码:

var foo = page.evaluate(function() {
    return document.foo;
});
Run Code Online (Sandbox Code Playgroud)

注意:这document不是严格必要的,但它有助于保持两个环境在开发人员的头脑中分开.


Jer*_*lle 5

亚伦的答案对我不起作用。也许早在2013年就有效了,但现在(2016年),它在当前版本中不再起作用。在亚伦的示例中,foo返回的是诺言,而不是价值。 console.log(foo)输出Promise { <pending> }

这是我想出的:

page
    .evaluate( function(){ return window.foo })
    .then ( function(foo){ console.log "foo = ", foo});
Run Code Online (Sandbox Code Playgroud)

现在,您真正获得了foo的价值。