HtmlUnit是一个很棒的 Java 库,它允许您以编程方式填写和提交 Web 表单。我目前正在维护一个用 ASP 编写的相当旧的系统,而不是按照我的要求每月手动填写这个网络表单,我正在尝试找到一种方法来自动化整个任务,因为我一直忘记它。这是一种用于检索一个月内收集的数据的表格。到目前为止,这是我编写的代码:
WebClient client = new WebClient();
HtmlPage page = client.getPage("http://urlOfTheWebsite.com/search.aspx");
HtmlForm form = page.getFormByName("aspnetForm");
HtmlSelect frMonth = form.getSelectByName("ctl00$cphContent$ddlStartMonth");
HtmlSelect frDay = form.getSelectByName("ctl00$cphContent$ddlStartDay");
HtmlSelect frYear = form.getSelectByName("ctl00$cphContent$ddlStartYear");
HtmlSelect toMonth = form.getSelectByName("ctl00$cphContent$ddlEndMonth");
HtmlSelect toDay = form.getSelectByName("ctl00$cphContent$ddlEndDay");
HtmlSelect toYear = form.getSelectByName("ctl00$cphContent$ddlEndYear");
HtmlCheckBoxInput games = form.getInputByName("ctl00$cphContent$chkListLottoGame$0");
HtmlSubmitInput submit = form.getInputByName("ctl00$cphContent$btnSearch");
frMonth.setSelectedAttribute("1", true);
frDay.setSelectedAttribute("1", true);
frYear.setSelectedAttribute("2012", true);
toMonth.setSelectedAttribute("1", true);
toDay.setSelectedAttribute("31", true);
toYear.setSelectedAttribute("2012", true);
games.setChecked(true);
submit.click();
之后click()
,我应该等待同一个网页完成重新加载,因为某处有一个表格显示我的搜索结果。然后,当页面加载完成后,我需要将其下载为 HTML 文件(非常类似于您最喜欢的浏览器中的“将页面另存为...”),因为我会刮出数据来计算它们的总数,而且我已经使用Jsoup库完成了这项工作。
我的问题是: 1. 如何以编程方式等待网页在 HtmlUnit 中完成加载?2. 如何以编程方式将生成的网页下载为 HTML 文件?
我已经查看了 HtmlUnit 文档,但找不到可以满足我需要的类。