Я пытаюсь создать приложение, которое будет подключаться к сайту с логином, предоставленным пользователем. У меня нет никакого опыта взаимодействия с веб-сайтами на Java, поэтому я нашел их в Google и нашел, что hmtlunit соответствует моим потребностям.
Но я столкнулся с ошибкой при попытке нажать кнопку отправки для формы входа:
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;}
Каким-то образом не удается найти кнопку submit для входа в систему
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>
Когда я поискал решение, я обнаружил, что отключение javascript поможет. Поэтому я сказал веб-клиенту отключить его (webClient.setJavaScriptEnabled (false);), но все же имелось исключение.
Сначала у меня возникла та же проблема с попыткой выбрать форму ("login_form"), но был метод, где я мог получить список всех форм, а затем просто посмотреть, соответствует ли одна из них списку. Мне не удалось найти способ обойтись кнопкой «Отправить», поэтому я надеялся, что кто-то другой знает решение этой проблемы.
Заранее спасибо,
Сэр тролль