2014-09-03 2 views
2

HTML 입력란을 사용하여 입력란에 텍스트를 입력 한 다음 실제로 JS 호출 인 링크를 클릭합니다. inputBox.setValueAttribute("example input");을 사용하여 입력에 텍스트를 넣을 때 문제가 발생합니다. 이 경우 버튼을 클릭 한 후 페이지가 전혀 변경되지 않습니다. 한편, inputBox.setValueAttribute("example input");을 삭제하고 버튼을 클릭하면 페이지 내용이 변경되고 빈 입력에 대한 오류가 포함됩니다.HTML 유니트 JS 기다림

다음은 관련 입력에 텍스트를 입력하고 버튼을 클릭하기 위해 사용한 코드입니다.

public void addressToBlockPlot(){ 
     WebClient client = new WebClient(BrowserVersion.FIREFOX_24); 
     client.getOptions().setThrowExceptionOnScriptError(false); 
     client.getOptions().setThrowExceptionOnScriptError(false); 
     client.setJavaScriptTimeout(10000); 
     client.getOptions().setJavaScriptEnabled(true); 
     client.setAjaxController(new NicelyResynchronizingAjaxController()); 
     client.getOptions().setTimeout(10000); 


     try { 
      HtmlPage page = client.getPage("http://mapi.gov.il/Pages/LotAddressLocator.aspx"); 

      HtmlInput inputBox = (HtmlInput)page.getHtmlElementById("AddressInput"); 
      final HtmlAnchor a = (HtmlAnchor) page.getElementById("helkaSubmit"); 

      inputBox.setValueAttribute("example input"); 

      a.click(); 
      client.waitForBackgroundJavaScript(2000); 
      HtmlPage page2= (HtmlPage) client.getCurrentWindow().getEnclosedPage(); 

      System.out.println(page2.asXml()); 

     } catch (Exception e) { 

     } 

    } 

이 문제를 해결하기위한 아이디어가 있습니까?

편집 : 내가 inputBox.setValueAttribute("");를 사용 해봤 입력 된 텍스트가 전혀 설정되어 있지 때 내가 가진 같은 오류가 발생 결과.

답변

0

내가 JS로드하는 데 시간이 걸릴 거의 유사한 문제를 가지고, 나는 성공적으로 조건을 추가하여 페이지로드 될 때까지 대기 및 재시도를 설정하여 필요 여부를 판단 input_length 여기

int input_length = page.getByXPath("//input").size(); 
    int tries = 5; 
    while (tries > 0 && input_length < 12) { 
     tries--; 
     synchronized (page) { 
      page.wait(2000); 
     } 
     input_length = page.getByXPath("//input").size(); 
     System.out.println("page loaded successfully"); 
    } 

을이 문제를 해결 한 페이지가로드되었는지 여부 당신은 당신 페이지의 구조에 따라 비슷한 조건을 사용할 수 있습니다.