无头浏览器,支持java的完整javascript

时间:2012-07-24 15:57:11

标签: java webkit qtwebkit headless headless-browser

我一直在使用HtmlUnit(开发人员做得很好)作为我之前的一些应用程序的无头浏览器,但javascript支持不适用于我的下一个应用程序将访问的某个网站。

  1. 我听说过Python的QtWebKit绑定,但我的应用程序是Java,还是WebKit或QtWebKit的Java绑定?

  2. 有没有人知道一个好的无头浏览器支持Java?

7 个答案:

答案 0 :(得分:5)

Nathan Ridley's answer to another similar question是迄今为止我发现的最完整的一个。

无论如何,如果一切都失败了,您可以使用Python或JS替代方案,将其功能作为服务器内的Web服务公开,然后您的Java应用程序可以通过Web服务使用无头浏览器的功能。设置会很痛苦,但如果没有其他工作可行,它可能是一个可行的选择。

另外,there are some "non-headless" browser wrappers for Java;也许有可能围绕这些建立一个测试解决方案,具体取决于要求。

答案 1 :(得分:4)

看看phantom.js。基于webkit,它提供了一个完整的无头浏览器。

答案 2 :(得分:3)

Rhino + env.js是一个完整的java解决方案,我已经使用过它,它不是超级快但看起来相当稳定,应该给你正确的js支持。

答案 3 :(得分:2)

也许是https://github.com/machinepublishers/jbrowserdriver - 它只是无头,只用Java编写。

(披露:我是项目业主)

答案 4 :(得分:1)

结帐zombie.js。从我的经历来看它非常快

答案 5 :(得分:1)

回复一个旧线程,希望它对某些人有用。

1)您可以使用QTJambi的QWebView。它速度相当快。

2)JBrowserDriver是另一种选择。

就个人而言,我发现QT引擎要快一点。

答案 6 :(得分:0)

内置Webview怎么样。我不确定是否完全支持JS,但是在网站上进行的快速检查显示它可以支持javascript。

JavaFX WebView:JFX WebView


     private static void initWebView(Stage primaryStage) {
        primaryStage.setTitle("JavaFX WebView Example");
        WebView webView = new WebView();
        //webView.getEngine().load("http://localhost:9009");
        webView.getEngine().loadContent("<h3 id='aa'>JAVA FX WebView, HelloWorld</h3><script>document.getElementById('aa').innerHTML='TEST'</script>");
        webView.getEngine().setJavaScriptEnabled(true);
        VBox vBox = new VBox(webView);
        Scene scene = new Scene(vBox, 960, 600);
        primaryStage.setScene(scene);
        primaryStage.show();
    }

与问题无关,但也要看一下:Java-ExpressNanoHttpd

这种组合可能会对某人有所帮助。