사용자가 제공 한 로그인으로 사이트에 연결하는 응용 프로그램을 만들려고합니다. 나는 자바에서 웹 사이트와 상호 작용하는 것에 대한 경험이 없기 때문에 나는 약간의 인터넷 검색을하고 나의 필요에 맞는 hmtlunit을 발견했다.Java HtmlUnit form.getInputByValue ("지금 로그인!"). click();
그러나이 로그인 양식 제출 버튼을 클릭 할 때 나는 오류로 실행 :
public static boolean attempt_login(String username, String password) throws ElementNotFoundException, IOException {
WebClient webClient = new WebClient(BrowserVersion.FIREFOX_3_6);
webClient.setJavaScriptEnabled(false);
webClient.setThrowExceptionOnScriptError(false);
webClient.setRefreshHandler(new RefreshHandler() {
public void handleRefresh(Page page, URL url, int arg) throws IOException {
System.out.println("handleRefresh");
}
});
HtmlPage page = (HtmlPage) webClient.getPage(Config.LOGIN_PAGE);
List<HtmlForm> forms = page.getForms();
HtmlForm form = null;
for(HtmlForm f : forms){
if(f.getId().equals("login_form")){
form = f;
}
}
if(form == null){
throw new NullPointerException("Could not find form!");
}
form.getInputByName("username").setValueAttribute(username);
form.getInputByName("password").setValueAttribute(password);
page = (HtmlPage) form.getInputByValue("Login Now!").click();
System.out.println(page.asText());
return false;}
는 어떻게 든 그것을 찾을 실패 submitButton이
com.gargoylesoftware.htmlunit.ElementNotFoundException: elementName=[input] attributeName=[value] attributeValue=[Login Now!]
at com.gargoylesoftware.htmlunit.html.HtmlForm.getInputByValue(HtmlForm.java:737)
at domain.Helper.attempt_login(Helper.java:41)
at TesterStartUp.main(TesterStartUp.java:15)
HTML 소스 코드를 로그인 :
<button type="submit" value="Login Now!" onmouseover="this.style.backgroundPosition='bottom';" onmouseout="this.style.backgroundPosition='top';" onclick="return SetFocus();">Login Now!</button>
해결책을 찾았을 때, j avascript가 도움이 될 것입니다. 그래서 나는 웹 클라이언트에게 그것 (webClient.setJavaScriptEnabled (false);)을 비활성화 시키라고 말했지만 여전히 예외가있었습니다.
처음에는 양식 ("login_form")을 선택하는 데 동일한 문제가 있었지만 모든 양식의 목록을 가져 와서 목록과 일치하는지 확인할 수있는 방법이있었습니다. 제출 버튼에 대한 해결책을 찾지 못했습니다. 그래서 다른 누군가가이 문제에 대한 해결책을 알고 있기를 바랍니다. 사전에
감사합니다, 선생님 트롤
해결할 희망, 그래서 HTML을 변경할 수 없습니다. 어떤 방법을 사용해야합니까? 제출 버튼의 유일한 '고유'항목은 값 –