2012-07-05 14 views
5

HtmlUnit to niesamowita biblioteka Java, która pozwala programowo wypełniać i przesyłać formularze internetowe. Obecnie utrzymuję całkiem stary system napisany w ASP i zamiast ręcznie wypełniać ten jeden formularz internetowy co miesiąc, próbuję znaleźć sposób na zautomatyzowanie całego zadania, ponieważ utrzymuję zapominając o tym. Jest to formularz do pobierania danych zebranych w ciągu miesiąca. Oto co mam zakodowane tak daleko:W języku Java i HtmlUnit, jak czekać na zakończenie strony i załadowanie jej jako 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(); 

Po click(), mam czekać na tej samej stronie internetowej, aby zakończyć przeładunku bo gdzieś tam jest stół, który wyświetla wyniki moich poszukiwań. Następnie, po zakończeniu ładowania strony, muszę pobrać ją jako plik HTML (bardzo podobny do "Zapisz stronę jako ..." w Twojej ulubionej przeglądarce), ponieważ usuwam dane, aby obliczyć ich sumy, a ja " już to zrobiłem przy użyciu biblioteki Jsoup.

Moje pytania są następujące: 1. Jak programowo czekać na zakończenie ładowania strony w HtmlUnit? 2. Jak programowo pobrać wynikową stronę internetową jako plik HTML?

Już zajrzałem do dokumentacji HtmlUnit i nie mogłem znaleźć klasy, która zrobi to, czego potrzebuję.

Odpowiedz

0

Jak programowo pobrać wynikowy stronę jako plik HTML

Spróbuj asXml(). Coś jak:

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()' działa! Czy wiesz coś o oczekiwaniu na przeładowanie strony? Próbowałem uśpić wątek przez 30 sekund po moim wywołaniu 'click()' i z powodzeniem zapisałem wynik 'asXml()' w pliku HTML, ale podczas gdy elementy '