2012-07-05 20 views
5

HtmlUnit es una impresionante biblioteca de Java que le permite llenar y enviar formularios web de forma programática. Actualmente estoy manteniendo un sistema bastante antiguo escrito en ASP, y en lugar de llenar este formulario web mensualmente cuando sea necesario, estoy tratando de encontrar la manera de automatizar toda la tarea porque mantengo Olvidando de eso. Es una forma de recuperar datos recopilados dentro de un mes. Esto es lo que he codificado hasta el momento:En Java y HtmlUnit, ¿cómo esperar a que la página resultante termine de cargarse y descargarla como 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(); 

Después de la click(), supone que tengo que esperar a que la misma página Web para terminar la recarga porque en algún lugar hay una tabla que muestra los resultados de mi búsqueda. Luego, cuando la página termine de cargarse, necesito descargarla como un archivo HTML (muy parecido a "Guardar página como ..." en tu navegador favorito) porque voy a raspar los datos para calcular sus totales, y yo ' Ya lo he hecho usando la biblioteca Jsoup.

1. ¿Cómo espero a que la página web termine de cargarse en HtmlUnit? 2. ¿Cómo descargo programáticamente la página web resultante como un archivo HTML?

Ya he examinado los documentos de HtmlUnit y no he podido encontrar una clase que haga lo que necesito.

Respuesta

0

¿Cómo programáticamente descargar la página web resultante como un archivo HTML

Trate asXml(). Algo así como:

page = submit.click(); 
String htmlContent = page.asXml(); 
File htmlFile = new File("C:/index.html"); 
PrintWriter pw = new PrintWriter(htmlFile, true); 
pw.print(htmlContent); 
pw.close(); 
+0

'asXml()' funciona! ¿Sabes algo sobre esperar a que la página se recargue? Traté de hacer que el hilo durmiera durante 30 segundos después de mi llamada a 'click()' y escribí el resultado de 'asXml()' en un archivo HTML, pero mientras los elementos '