Я пытаюсь использовать 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».