用于Java的支持全面JavaScript的无头浏览器

32

我之前使用了HtmlUnit(开发者做得很好),作为一些应用程序的无头浏览器,但是在我的下一个应用程序要访问的某些网站中,它的javascript支持不起作用。

  1. 我听说Python有QtWebKit绑定,但我的应用程序将使用Java,或者是否有Java绑定Webkit或QtWebKit?

  2. 是否有人知道一个拥有完整javascript支持的适用于Java的好的无头浏览器?


1
我也处于类似的情况。我使用HTMLUnit,但某些网站上的JS无法在其上运行。你找到了一个可行的替代方案吗? - Arya
1
显然没有人提供解决方案,因为没有一个是基于Java的。 - Mosty Mostacho
@John,你在Java应用程序中使用了哪个无头浏览器? - BasK
6个回答

10

Nathan Ridley在另一个类似问题的回答是我目前找到的最完整的答案。

无论如何,如果一切都失败了,您可以使用Python或JS替代方案,在服务器内部将其功能暴露为Web服务,然后您的Java应用程序可以通过WebService使用无头浏览器的功能。虽然设置过程很麻烦,但如果没有其他可行的方法,则可能是一种可行的替代方案。

此外,Java有一些“非无头”浏览器包装程序,根据要求,也许可以构建一个测试解决方案。


6

1
我目前也在我的一个项目中使用JBrowserDriver - 我完全可以推荐它。 - philonous

4

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


10
有没有适用于QtWebKit的Java绑定? - John
分离问题
或者
Selenium GhostDriver
- Jan Wasserbauer

3
Rhino + env.js 是一个完整的 Java 解决方案,我曾经使用过它。虽然不是非常快,但它似乎相当稳定,应该可以为您提供正确的 js 支持。

1

回复一个旧帖子,希望对某些人有用。

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

2) JBrowserDriver是另一个选项。

个人认为QT引擎稍微快一些。


0

内置Web视图怎么样?我不确定是否支持完整的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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接