Java - HtmlUnit refresh page to get new select option

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

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

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

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

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

while(refresh){
    try{
       form.getSelectByName("date").getOptionByValue(reserveDate).setSelected(true);
       refresh = false;
       System.out.println(reserveDate+" 存在!");
       HtmlSubmitInput submitBtn = form.getInputByValue("查詢");
       reservesite = submitBtn.click();
    }catch(ElementNotFoundException e){
       if(!printOnce){
          System.out.println(reserveDate+" 找不到...等待中");
       } 
       Thread.sleep(60000);
       reserv_page = clearPageCache(chrome, root_url.concat(webpage), true);
       reserv_page = (HtmlPage) reserv_page.refresh();
       form = reserv_page.getForms().get(0);
       printOnce = true;
    }
}

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

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

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

留言