2014-10-01 67 views
0

我想用Java编写应用程序,应用程序应在无头浏览器中测试网站,例如PhantomJS或zombie.js。 PhantomJS脚本是用JavaScript编写的,因此如何在Java应用程序中使用PhantomJS提供的JavaScript API,而不使用Selenium和GhostDriver?这件事与图书馆Nashorn有关吗?如何在Java应用程序中使用PhantomJS的JavaScript API

更多细节与步骤,我需要经过:
1.创建一个HTTP请求(例如用:java.net.HttpURLConnection中),并将其发送到Web服务器
2.获取相应的响应并保存源在HTML文件
3.打开快速模拟浏览器的HTML文件(没有的HtmlUnit)
4.验证是否有消息XXX警报打开HTML响应

不出现时,还是不任何人都知道解决方案?
PS:如果带GhostDriver的PhantomJs支持警报处理,它会很容易,但它不会!

回答

-1

您可以使用ScriptEngine来评估Java内部的PhantomJS脚本;详情请参阅here。例如:

ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn"); 
engine.eval(new FileReader("script.js")); 
+0

你不能那样做。 PhantomJS脚本不是独立的,它们依赖于PhantomJS API,如果你这样做,它不存在。你有另外一个建议吗? – 2014-10-01 09:14:53

+2

您可以尝试使用PhantomJS [Inter Process Communication](http://phantomjs.org/inter-process-communication.html)或[phantomjs/javabindings](https://github.com/KDAB/phantomjs/tree/javabindings/javabindings)。 – denim2x 2014-10-01 17:31:36

+0

某种IPC是最简单的解决方案,是一个有效的答案。尽管javabindings看起来很有趣。你能写出一个示例代码(如何使用)的答案,甚至可以如何构建?您可以将其添加到现有的答案中,但也可以发布单独的答案。 – 2014-10-01 21:52:52

1

如果你想从Java应用程序测试在模拟浏览器,阻力最小的路径是使用硒Java驱动程序,与HtmlUnit

Nashorn不会为PhantomJS提供JavaScript API;也不会提供诸如“窗口”和“文档”之类的浏览器对象。它将允许您使用您提供的任何“主机”(本机Java)对象在Java程序中运行JavaScript,并在JavaScript中创建Java对象,因此您当然可以重新实现Java中的PhantomJS API。但想必这不是你想要的。

+0

我现在正在使用HtmlUnit(没有Selenium),但我不满意速度,它几乎和Firefox浏览器一样慢,因为Javascript渲染速度很慢。 – juzwani 2014-10-01 09:39:39

相关问题