10


我有一个 Java 7 程序(使用 WebStart 技术,仅适用于 Windows 7/8 计算机)。

我需要添加一个函数,以便我的程序单击具有已知 URL (https) 的页面上的按钮。

有些人建议使用 WebKit SWT,但我去了他们的网站,他们说该项目已停止。( http://www.genuitec.com/about/labs.html )

其他人说 JxBrowser 是唯一的选择,但它看起来超过 1,300 美元,这太疯狂了。( http://www.teamdev.com/jxbrowser/onlinedemo/ )

我正在寻找简单、免费、轻量级的东西,并且能够打开 HTTPS 链接、解析 HTML、通过 DOM 访问按钮并单击它。也许还有一些 JavaScript,以防有 JS 处理程序。

谢谢你的帮助。

4

2 回答 2

13

您可能正在寻找HtmlUnit —— “Java 程序的无 GUI 浏览器”

这是一个示例代码,可打开google.com、使用表单搜索"htmlunit"并打印结果数。

import com.gargoylesoftware.htmlunit.*;
import com.gargoylesoftware.htmlunit.html.*;

public class HtmlUnitFormExample {
    public static void main(String[] args) throws Exception {
        WebClient webClient = new WebClient();
        HtmlPage page = webClient.getPage("http://www.google.com");

        HtmlInput searchBox = page.getElementByName("q");
        searchBox.setValueAttribute("htmlunit");

        HtmlSubmitInput googleSearchSubmitButton = 
                          page.getElementByName("btnG"); // sometimes it's "btnK"
        page=googleSearchSubmitButton.click();

        HtmlDivision resultStatsDiv =
                                page.getFirstByXPath("//div[@id='resultStats']");

        System.out.println(resultStatsDiv.asText()); // About 309,000 results
        webClient.closeAllWindows();
    }
}

其他选项包括:

  • Selenium : 会打开像 Firefox 这样的浏览器并进行操作。
  • Watij:也将打开一个浏览器,但在它自己的窗口中。
  • Jsoup:很好的解析器。不过,没有 JavaScript。
于 2013-05-25T03:38:46.203 回答
0

你的问题有点难以理解你想要什么。如果你有一个 webstart 应用,并且想在浏览器中打开一个链接,你可以使用该java.awt.Desktop.getDesktop().browse(URI)方法。

public void openLinkInBrowser(ActionEvent event){

    try {
        URI uri = new URI(WEB_ADDRESS);
        java.awt.Desktop.getDesktop().browse(uri);

    } catch (URISyntaxException | IOException e) {
        //System.out.println("THROW::: make sure we handle browser error");
        e.printStackTrace();
    }

}
于 2013-05-25T03:45:54.907 回答