2011-11-25 5 views
3

htmlUnit을 사용하여 javascript를 실행하려고합니다. 자바 스크립트를 실행 한 후 자바 스크립트 실행으로 인해 페이지에 변경 사항이 있는지 확인하고 싶습니다. 즉, 나는 여기에 htmlUnit에서 Javascript를 실행하십시오.

가 실제로 의도 무엇을 설명하는 샘플 코드이다

내가 할 수있는 모든 아이디어를 어떻게 ... ... 전 자바 스크립트 실행 후 HTML 페이지를 비교하려면 ...

public static void main(String[] args) { 
    final WebClient webClient = new WebClient(); 

    HtmlPage page; 
    try { 
     page = webClient 
       .getPage("http://www.somepage.com"); 
     System.out.println(page.asXml()); 
     System.out.println(page.getByXPath("//script")); 

     BufferedInputStream buffer = null; 
     // System.out.print("getWebSite " + urlValue + "\n"); 

     URL url = new URL(
       "http://www.somepage.com/someJS.js"); 
     HttpURLConnection urlc = (HttpURLConnection) url.openConnection(); 
     buffer = new BufferedInputStream(urlc.getInputStream()); 

     StringBuilder builder = new StringBuilder(); 
     int byteRead; 
     while ((byteRead = buffer.read()) != -1) 
      builder.append((char) byteRead); 

     buffer.close(); 

     ScriptResult result = page.executeJavaScript(builder.toString()); 
     Object jsResult = result.getJavaScriptResult(); 

     HtmlPage afterExecution = (HtmlPage) result.getNewPage(); 

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

    } catch (FailingHttpStatusCodeException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (MalformedURLException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

} 
+0

html 문제가 있습니까? 아니면 비교가 되었습니까? –

답변

1

자바 스크립트 소스를 "실행"해도 아무런 변화가 없습니다. result.getNewPage()에서 당신이 아주 조금 돌아올 것으로 기대합니다. 실제 사이트를 방문하도록 예제를 변경하고 어떤 결과가 나타날 것으로 예상되는지 설명하고, 예제를 실행 해 볼 수 있습니다.

그렇다면 HtmlUnit을 자바를 통해 제어하는 ​​브라우저로 생각하는 것이 좋습니다. Javascript를 페이지에서 "실행"하지 않으면 HtmlUnit이이를 실행합니다. 당신은 당신이 물건을 클릭하는 인간 사용자 인 것처럼 행동하지만 Java 코드를 통해 "클릭"을 수행합니다.

예를 들어 page의 DOM을 탐색하여 자바 스크립트를 트리거하는 데 사용할 수있는 항목 (예 : 버튼 또는 이미지 클릭)을 찾을 수 있습니다. click()을 호출하면 Javascript가 수행 한 결과로 새로운 페이지가 생성됩니다.

+1

안녕하세요 Rodney, 답장을 보내 주셔서 감사합니다. 예, htmlUnit은 헤드리스 자바 브라우저이며 자바 스크립트를 실행하기 위해 click() 이벤트 및 기타 이벤트를 호출해야한다는 것을 알고 있습니다. 내가 기본적으로하고 싶은 것은 : 웹 사이트는 일반적으로

관련 문제