HtmlUnit, пытаясь получить 2 формы, получить исключение во второй форме - PullRequest
1 голос
/ 26 августа 2011

В настоящее время используется HtmlUnit.

Получение первой страницы входа не представляет проблем, успешный вход в систему, переход на следующую страницу, «нажатие» на ссылку, чтобы перейти на страницу «MyDetails».

После получения страницы «MyDetails» я хочу получить то же самое, что и я, получая первую форму входа.

Почему мне нужно получить форму, я хочу сменить пароль, а поля находятся в форме.

Когда я пытаюсь получить вторую форму, я получаю следующее исключение:

com.gargoylesoftware.htmlunit.ElementNotFoundException: elementName = [форма] attributeName = [имя] attributeValue = [форма2]

Дает исключение в этой строке кода:

HtmlForm form2 = page3.getFormByName("form2");

Примечание: первое имя формы - "form1", а второе имя формы - "form2".

Это проблема с HtmlUnit?

Код:

try {
    WebClient webclient = new WebClient(BrowserVersion.FIREFOX_3_6);
    HtmlPage page1 =   webclient.getPage("http://www.highveld.mobi/pages/clubvip/login.aspx");

    HtmlForm form = page1.getFormByName("form1");
    HtmlSubmitInput buttonLogin = form.getInputByName("cmdLogin");

    HtmlTextInput cellLogin = form.getInputByName("txtCellNumber");
    HtmlPasswordInput passLogin = form.getInputByName("txtLoginPassword");
    cellLogin.setValueAttribute(change);
    passLogin.setValueAttribute(oldPass);

    HtmlPage page2 = buttonLogin.click();

    HtmlAnchor link = page2.getAnchorByHref("updateprofile.aspx");
    HtmlPage page3 = link.click();

    System.out.println(page3.getUrl());
    HtmlForm form2 = page3.getFormByName("form2");


    HtmlPasswordInput pass = form2.getInputByName("txtPassword");
    HtmlPasswordInput passConfirm = form2.getInputByName("txtConfirmPassword");
    HtmlSubmitInput button = form2.getInputByName("cmdUpdate");

    pass.setValueAttribute(newPass);
    passConfirm.setValueAttribute(newPass);

    HtmlPage page4 = button.click();
}

1 Ответ

2 голосов
/ 04 сентября 2011

Прежде всего, пожалуйста, обновите до HtmlUnit 2.9, если вы используете старую версию.Во-вторых, замените это на это:

System.out.println(page3.getUrl());
HtmlForm form2 = page3.getFormByName("form2");

На это:

System.out.println(page3.getUrl());
System.out.println(page3.asXml());
HtmlForm form2 = page3.getFormByName("form2");

И проверьте наличие элемента form2, который, я уверен, его там быть не должнопоскольку он генерирует исключение ElementNotFoundException.

Я обычно использую XPath вместо getFormByName, вы можете попробовать тоже.

Надеюсь, это поможет!

...