2009-10-08 6 views
1

아파치 HTMLUNIT ..... 자바 스크립트 처리 문제

com.gargoylesoftware.htmlunit.WebClient 

을 통해 웹 사이트 (http://www.orkut.com)에 로그인하고 싶습니다. 그러나 "제출"버튼을 클릭하면 로그인 후 필요한 예상 페이지로 이동하지 않습니다. 대신 동일한 로그인 페이지를 반환합니다. 분명한 의미에서 로그인에 문제가 있습니다. javascript가없는 사이트에서 동일한 코드를 사용해도 스크립트가 제대로 작동하지 않아 스크립트를 처리 할 수 ​​없다고 생각합니다.

다음 코드를 사용하려고합니다.

public static void main(String[] args) { 
    final WebClient webClient = new WebClient(); 
    try { 
     HtmlPage loginPage = webClient.getPage(new URL("https://www.google.com/accounts/ServiceLogin?service=orkut&hl=en-US&rm=false&continue=http%3A%2F%2Fwww.orkut.com%2FRedirLogin%3Fmsg%3D0%26page%3Dhttp%253A%252F%252Fwww.orkut.co.in%252FHome.aspx&cd=IN&passive=true&skipvpage=true&sendvemail=false")); 
     System.out.println(loginPage.getTextContent()); 
     List<HtmlForm> forms = loginPage.getForms(); 
     HtmlForm loginForm = forms.get(0); 
     HtmlInput username = loginForm.getInputByName("Email"); 
     HtmlInput password = loginForm.getInputByName("Passwd"); 
     HtmlInput submit = loginForm.getInputByName("signIn"); 
     username.setNodeValue("username"); 
     password.setNodeValue("password"); 
     HtmlPage homePage = submit.click(); 
     Thread.sleep(10 * 1000); 
     System.out.println(homePage.getTextContent()); 
    }catch(Exception ex) { 
     ex.printStackTrace(); 
    } 
} 

"제출"버튼을 클릭하면 실제로이 함수가 먼저 호출됩니다.

onsubmit="return(gaia_onLoginSubmit());" 

아래 양식

<form id="gaia_loginform" action="https://www.google.com/accounts/ServiceLoginAuth?service=orkut" method="post" 
    onsubmit="return(gaia_onLoginSubmit());"> 

아무도이 날 도와 드릴까요.

참고 : 솔루션

를 지불하겠습니다.

답변

2

According to their site 자바 스크립트 지원이 Mozilla Rhino에 의해 제공됩니다 지불 것입니다 그래서 아마 당신이 필요로하는 모든 클래스 패스에 추가 (그리고 아마도 일부 구성 바이올린)하는 것입니다. 또한

는 HtmlUnit과 내가 이미 HtmlUnit과 메일 링리스트 ([email protected]) 및 HtmlUnit과 전문적인 지원 (http://www.efficient-webtesting.com에 내 문제를 게시 한 professional support

+0

있다) Mozzilla Rhino를 설치하고 클래스 패스에 추가했습니다. 당신은 내가 어떤 구성을 수정해야하는지 말해 주시겠습니까? –

+0

com.gargoylesoftware.htmlunit.javascript looger를 디버그 수준으로 설정하여 실행중인 내용을 볼 수 있습니다. –