Найдите форму с Java и htmlUnit - PullRequest
       37

Найдите форму с Java и htmlUnit

0 голосов
/ 03 апреля 2020

Я написал простую программу, которая должна войти через форму на веб-сайте.

К сожалению, форма в html не имеет имени или идентификатора.

Я использую последнюю версию версия HtmlUnit и Java 11.

Я пытался найти форму с помощью метода .getForms (), но безуспешно.

Html Фрагмент с веб-сайта, который я пробую для входа

Вот мой код для поиска формы:

    //Get the form
     HtmlForm form = LoginPage.getFormByName("I tried several options here");
    //Get the Submit button
    final HtmlButton loginButton = form.getButtonByName("Anmelden");
    //Get the text fields for password and username
    final HtmlTextInput username = form.getInputByName("text");
    final HtmlTextInput password = form.getInputByName("password");

Что бы я ни пытался, я не нашел никакой формы.

Это мой класс соединения, если это поможет:

 public HtmlPage CslPlasmaConnection(){
    //Create Webclient to connect to CslPlasma
    WebClient CslPlasmaConnection = new WebClient(BrowserVersion.BEST_SUPPORTED);
    //helper variable ini with null
    HtmlPage CslPlasmaLoginPage = null;
    //Get the content from CslPlasma

    try {
        CslPlasmaLoginPage = CslPlasmaConnection.getPage(URL);

    } catch (IOException e) {
        e.printStackTrace();
    }
    //Return CslPlasma Login Page
    return CslPlasmaLoginPage;
}

Ответы [ 2 ]

0 голосов
/ 03 апреля 2020

Не зная страницы, я могу только догадываться ...

Посмотрите на этот ответ { ссылка }

И попробуйте использовать последнюю страницу (может быть, есть некоторая js, которая создает форму).

    webClient.getPage(url);
    webClient.waitForBackgroundJavaScript(10000);

    HtmlPage page = (HtmlPage) webClient.getCurrentWindow().getEnclosedPage();
0 голосов
/ 03 апреля 2020

Если вы уверены, что это единственная форма на странице или вы знаете, какой это номер формы, вы можете использовать page.getForms(), чтобы получить все формы страницы и получить свою из полученного списка.

Вроде так:

HtmlForm form = LoginPage.getForms().get(0); // if it's the only form, its index is 0
...