Java - HtmlUnit refresh page to get new select option

最近使用HtmlUnit來實作自動預約功能,如此就不必在當下的時間點與其他人在忙碌的網頁

內搶資源(非針對訂票,別誤會XD,無利益關係),但要預約的新項目(select option),通常是

在過了當天後才會出現,因此程式就必需能夠在那邊幫我守著,如此一來就不用一直盯著

它同時不斷的按F5囉!總之就是不用辛苦的守候(揪甘心ㄟ),雖然還是搶的到XD

針對這個功能的實現,可以去查閱HtmlPage下的refresh method,使用起來很簡單,如下:

  1. while(refresh){
  2. try{
  3. form.getSelectByName("date").getOptionByValue(reserveDate).setSelected(true);
  4. refresh = false;
  5. System.out.println(reserveDate+" 存在!");
  6. HtmlSubmitInput submitBtn = form.getInputByValue("查詢");
  7. reservesite = submitBtn.click();
  8. }catch(ElementNotFoundException e){
  9. if(!printOnce){
  10. System.out.println(reserveDate+" 找不到...等待中");
  11. }
  12. Thread.sleep(60000);
  13. reserv_page = clearPageCache(chrome, root_url.concat(webpage), true);
  14. reserv_page = (HtmlPage) reserv_page.refresh();
  15. form = reserv_page.getForms().get(0);
  16. printOnce = true;
  17. }
  18. }

form為當下的page取得的,而這個form內我針對了select name = "date"的下拉選單,看是否有

我要的項目出現了,如果沒有的話就會throw exception,此時設定一分鐘的等待,然後程式

在做page的refresh,再重新去找該項目是否出現了!

留言