如何在Java应用程序中使用PhantomJS的JavaScript API

如何在Java应用程序中使用PhantomJS的JavaScript API,java,javascript,phantomjs,alert,headless-browser,Java,Javascript,Phantomjs,Alert,Headless Browser,我想用Java编写一个应用程序,它应该在无头浏览器中测试网站,比如PhantomJS或zombie.js。PhantomJS脚本是用JavaScript编写的,那么我如何在Java应用程序中使用PhantomJS提供的JavaScript API而不使用Selenium with GhostDriver呢?这和纳肖恩图书馆有关吗 有关我需要完成的步骤的更多详细信息: 1.创建一个HTTP请求,例如:java.net.HttpUrlConnection。并将其发送到Web服务器 2.获取相应的响应

我想用Java编写一个应用程序,它应该在无头浏览器中测试网站,比如PhantomJS或zombie.js。PhantomJS脚本是用JavaScript编写的,那么我如何在Java应用程序中使用PhantomJS提供的JavaScript API而不使用Selenium with GhostDriver呢?这和纳肖恩图书馆有关吗

有关我需要完成的步骤的更多详细信息: 1.创建一个HTTP请求,例如:java.net.HttpUrlConnection。并将其发送到Web服务器 2.获取相应的响应并将源代码保存在HTML文件中 3.在快速无头浏览器中打开HTML文件无HtmlUnit 4.验证打开HTML响应时是否显示带有消息xxx的警报

有人知道解决办法吗? PS:如果带有GhostDriver的PhantomJs支持警报处理,这将很容易,但它不支持

您可以使用它来评估Java内部的PhantomJS脚本;有关详细信息,请参阅。例如:

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

如果您想从Java应用程序在无头浏览器中进行测试,阻力最小的方法是使用Selenium Java驱动程序,并使用


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

你不能那样做。PhantomJS脚本不是自包含的,它们依赖于PhantomJSAPI,如果您这样做,它就不存在。你还有其他建议吗?你可以尝试使用PhantomJS或。某种IPC是最简单的解决方案,也是一个有效的答案。尽管如此,javabindings似乎很有趣。你能用示例代码写一个答案吗?如何使用,甚至如何构建?您可以将此添加到现有答案中,也可以发布单独的答案。这将非常棒+1!我现在使用的是没有Selenium的HtmlUnit,但我对它的速度不满意,因为它的Javascript渲染速度很慢,几乎和Firefoxbrowser一样慢。