HtmlUnit是一個非常棒的Java庫,它允許您以編程方式填寫並提交Web表單。我目前正在維護一個用ASP編寫的漂亮的舊系統,而不是按照我的要求每月手工填寫這一個Web表單,我試圖找到一種方法來實現整個任務的自動化,因爲我保留忘了它。這是一種檢索一個月內收集的數據的表單。下面是我到目前爲止編碼:在Java和HtmlUnit中,如何等待生成的頁面完成加載並將其下載爲HTML?
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文件下載(非常像「Save Page As ...」保存在您最喜歡的瀏覽器中),因爲我將刪除數據來計算它們的總數,我已經使用Jsoup庫完成了這項工作。我的問題是: 1.如何以編程方式等待網頁在HtmlUnit中完成加載? 2.如何以編程方式將生成的網頁作爲HTML文件下載?
我已經研究過HtmlUnit文檔,並且找不到一個能夠做我需要的類。
'asXml()'does not work!你知道等待頁面重新加載嗎?我嘗試讓線程在調用'click()'後睡30秒,併成功將'asXml()'的結果寫入HTML文件,但在正確修改'
@matkiros由於'click()'立即返回HtmlPage'或子類的新實例,即您需要執行:'page = submit.click();'或將其分配給新的參考。 –
你是對的,我做了'page = submit.click()'事情,並且它也按照我的想法工作。謝謝! –