2016-10-09 11 views
0

Я пытаюсь использовать HtmlUnit для получения данных fom на веб-сайте, до сих пор мне удалось ввести данные, необходимые для входа (имя пользователя & пароль).HtmlUnit - после входа на сайт страница не перенаправляется

Проблема начинается с того, что форма веб-сайт Войти доцент имеют кнопку отправки, а есть HREF, который имеет функцию OnClick JavaScript (onclick="login_submit()) , которые проверяют данные и затем вызвать window.location = "index.php";

Так я пытался нажав HREF помощью:

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

и попробовал:

page.executeJavaScript(javaScriptCode); 

но р возрастная переменная dosent получает ожидаемую страницу, она получает тот же 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 код:

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».

ответ

0

Попробуйте это, и он должен сделать трюк:

WebWindow окно = page.getEnclosingWindow();