Нажатие кнопки в htmlunit вызывает исключение приведения? - PullRequest
2 голосов
/ 11 июля 2011

Когда я пытаюсь запустить программу, все работает, кроме нажатия кнопки. Когда я нажимаю кнопку, я получаю это исключение: java.lang.ClassCastException: com.gargoylesoftware.htmlunit.html.HtmlButtonInput cannot be cast to com.gargoylesoftware.htmlunit.html.HtmlSubmitInput

public class Connect {
    public Connect(int port, String host) {
        WebClient webClient = new WebClient(BrowserVersion.FIREFOX_3/*, host, port*/);
        webClient.setJavaScriptEnabled(true);
        HtmlPage page = null;
        try {
            page = webClient.getPage("localhost/vote.php");
        } catch (IOException e) {
            e.printStackTrace();
        }
        HtmlForm button = page.getFormByName("voted");
        HtmlSubmitInput formSubmit = button.getInputByName("reward");//errors: java.lang.ClassCastException: com.gargoylesoftware.htmlunit.html.HtmlButtonInput cannot be cast to com.gargoylesoftware.htmlunit.html.HtmlSubmitInput
        page.executeJavaScript("setStatus(1);");
        page.executeJavaScript("setStatus(2);");
        page.executeJavaScript("setStatus(3);");
        page.executeJavaScript("canClickReward = true;");

        try {
            formSubmit.click();
        } catch (IOException e) {
            System.out.println("Form Button" + e.getMessage());
        }
        //page.executeJavaScript("document.forms[\"voted\"].submit()"); //Doesn't submit form
        System.out.println(page.asText());
    }
}

Кто-нибудь знает, как я могу исправить проблему приведения, чтобы она нажимала кнопку в форме?

1 Ответ

3 голосов
/ 11 июля 2011

Изменить строку

HtmlSubmitInput formSubmit = button.getInputByName("reward");

до

HtmlButtonInput formSubmit = button.getInputByName("reward");

Первая строка будет работать, если ваш HTML имеет

<input type="submit" name="reward" .../>

Но, видимо, имеет

<input type="button" name="reward" .../>
...