Java SE:打开网页并单击按钮

时间:2013-05-25 03:36:12

标签: java


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

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

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

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

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

感谢您的帮助。

2 个答案:

答案 0 :(得分:10)

您可能正在寻找HtmlUnit - 用于Java程序的“GUI-Less浏览器”

以下是打开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。

答案 1 :(得分:1)

您的问题很难理解您的需求。如果您有一个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();
    }

}