2016-10-09 10 views
0

私はHtmlUnitを使用してWebサイトからデータを取得しようとしています。 これまでのところ、ログインに必要なデータを入力することができました(ユーザ名&パスワード)。HtmlUnit - Webサイトへのログイン後にページがリダイレクトされない

問題ではなく、データを検証し、その後、私はクリックしてみましたwindow.location = "index.php";

を呼び出すonClickのJavaScript関数を持っているのhref (onclick="login_submit()) があり、ウェブサイトのログインフォームが送信ボタンを持っているdosentという事実で始まります

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

をしてみました::hrefの使用

page.executeJavaScript(javaScriptCode); 

が、Pを年齢の可変用量は、期待されるページを得る、それはクリックする前と同じURLを持って、リダイレクトはありません。 login_submit()関数が呼び出されると、 "login .."を示すラベルがありますが、そこから何も起こりません。

// 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 
      ); 
     } 
    } 
} 

Javaコード:ここで

がコードである私は、ログインデータがOKであることをいくつかのテストの後に事実を知っている

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

これを試してみて、それがトリックを行う必要があります

関連する問題