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;