【发布时间】:2015-03-02 02:28:52
【问题描述】:
我有一个问题:我必须在 java 程序中执行一个 phantomjs 脚本,但我不能。 这是脚本的代码:
var page = require('webpage').create();
page.open('http://stackoverflow.com',function(status){
if(status !== 'success'){
console.log('Open failed');
}else{
console.log(page.evaluate(function(){
return document.documentElement.outerHTML;
}));
}
phantom.exit();
});
在实践中,我想执行网页的 javascript,然后获取 html 结果。 我尝试使用此链接Running Phantomjs from javascript, JSP or Java 处的代码,但我的程序在此行被阻止
int exitStatus = process.waitFor();
我能做些什么来解决这个问题??
谢谢
【问题讨论】:
-
您是否在类 unix 操作系统下运行?你有安装 PhantomJS 和 /usr/bin 下的脚本吗?
-
您 phantomjs 脚本的输出可能很长——比 Java 的 BufferedReader 的缓冲区大小还要长。因此,您可能会陷入 phantomjs 脚本阻塞的陷阱,因为您没有读取它的输出并且缓冲区已满。详情请查看:stackoverflow.com/questions/5483830/…
-
是的,我在unix系统(Ubuntu)下,安装了phantomjs,脚本在同一目录中。
-
我会把问题分解成更小的问题。首先,您应该从命令行执行您的幻像脚本,以确保它返回您所期望的。然后确保您从 java 正确执行幻象。使用它附带的一个更简单的示例,只需查找返回码,而不是一堆内容。一旦您知道 java 可以找到 phantom 二进制文件并且它正在正确执行脚本,那么您可以查看 java 的结果,在这种情况下,您可能会遇到 Miichi 提到的问题。
-
脚本正常工作。如果我只从命令行执行脚本,我会得到我想要的。问题是在Java程序中调用这个脚本......我不能这样做。
标签: java javascript html jsp phantomjs