私は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;: