2016-10-09 3 views
0

HtmlUnit을 사용하여 웹 사이트에서 데이터를 가져 오려고 시도했습니다. 지금까지는 로그인에 필요한 데이터를 입력 할 수있었습니다 (사용자 이름 & 암호).HtmlUnit - 웹 사이트에 로그인 한 후 페이지가 리디렉션되지 않음

문제는 웹 사이트 로그인 폼에 버튼을 제출이 dosent 사실로 시작하는 대신 데이터를 확인하고

window.location = "index.php"; 그래서 내가 클릭 시도 부르는 온 클릭 자바 스크립트 기능 (onclick="login_submit()) 이있는 HREF가

HtmlAnchor anchor = page.getAnchorByText("כניסה"); 
page = anchor.click(); 

및 시도 : href가 사용

page.executeJavaScript(javaScriptCode); 

하지만 P는 연령 가변 dosent는 예상 한 페이지를 얻는다, 그것은 누르기와 동일한 URL을 얻고 아무 방향도 없다. login_submit() 함수가 호출되면 "로그인 .."을 나타내는 레이블이 있지만 거기에서 아무 것도 발생하지 않습니다.

// javascript login_submit() -- this is not my website and not my JS code so ive deleted some things: 

function login_submit() 
{ 
    if(!LOGIN_SUBMIT_PROCESSED) 
    { 
     var approved = true; 
     var admin_user_username_field = document.getElementById('admin_user_username'); 
     var admin_user_username_error = document.getElementById('admin_user_username_error'); 
     var admin_user_password_field = document.getElementById('admin_user_password'); 
     var admin_user_password_error = document.getElementById('admin_user_password_error'); 

     admin_user_username_field.className = "login_form_field_input_text"; 
     admin_user_username_error.style.display = 'none'; 
     admin_user_password_field.className = "login_form_field_input_text"; 
     admin_user_password_error.style.display = 'none'; 

     if(admin_user_username_field.value.length == 0) 
     { 
      //do something 
     } 
     if(admin_user_password_field.value.length == 0) 
     { 
      //do something 
     } 
     if(approved) 
     { 
      LOGIN_SUBMIT_PROCESSED = true; 
      document.getElementById("login_form_options").style.display = "none"; 
      document.getElementById("login_form_process").style.display = ""; 

      var http_request = new XHConn(); 
      http_request.connect(
       "login_submit.php?cache="+string_unique(), 
       "POST", 
       "form_anti_bot_code="+encodeURIComponent(form_anti_bot_code_field.value) 
       + "&admin_user_username="+encodeURIComponent(admin_user_username_field.value) 
       + "&admin_user_password="+encodeURIComponent(admin_user_password_field.value), 
       function(response,callback_data) 
       { 
        if(response.readyState == 4) 
        { 
         if(response.status == 200) 
         { 
          //alert(response.responseText); 
          try 
          { 
           var json_response = JSON.parse(response.responseText); 

           if(json_response["error_code"] == "0") 
           { 
            window.location = "index.php"; 
           } 
           else 
           { 
            //do something 
           } 
          } 
          catch(error) 
          { 
           alert(error); 
          } 
         } 

         LOGIN_SUBMIT_PROCESSED = false; 
        } 
       }, 
       null 
      ); 
     } 
    } 
} 

자바 코드 : 여기

코드입니다 내가 로그인 데이터가 괜찮 몇 가지 테스트 후 사실을 알고

public static void main(String[] args) throws Exception { 

    WebClient webClient = new WebClient(); 
    webClient.getOptions().setJavaScriptEnabled(true); 
    webClient.getOptions().setThrowExceptionOnScriptError(false); 
    webClient.getOptions().setCssEnabled(true); 
    //webClient.getOptions().setUseInsecureSSL(true); 
    webClient.getOptions().setRedirectEnabled(true); 


    HtmlPage page = (HtmlPage) webClient 
      .getPage(url); 
    HtmlForm form = page.getFormByName("login_form"); 

    form.getInputByName("admin_user_username").setValueAttribute("XXXXX"); 
    HtmlInput passWordInput = form.getInputByName("admin_user_password"); 
    passWordInput.removeAttribute("disabled"); 
    passWordInput.setValueAttribute("XXXXXX"); 

    HtmlAnchor anchor = page.getAnchorByText("Login"); 
    page = anchor.click(); 
    System.out.println(page.getBody().asText()); 
    webClient.close(); 
} 

, HREF는 클릭과 지표가 그 로그인이 진행 중입니다. 주요 문제는 리다이렉트하지 않고 "index.php"페이지를 얻지 못한다는 것입니다.) (

WebWindow 창 = page.getEnclosingWindow;

답변

0

이 시도하고 트릭을 할해야

관련 문제