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

我有一个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处理程序。

谢谢你的帮助。

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

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

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