Обработка динамической HTML-формы с помощью htmlUnit - PullRequest
0 голосов
/ 19 января 2019

Фон

  1. Я использую htmlUnit для имитации поведения пользователя на определенной странице
  2. Достигаю страницу входа, на которой мне нужно ввести учетные данные пользователя

Выпуск:

  1. Форма, которую я должен заполнить в деталях, динамически изменяется и выдвигает новые поля ввода со значением, которое изменяется после каждого вставленного символа.

  2. В этом поле ввода есть несколько прослушивателей событий, которые, насколько я смог найти в отладке Chrome, событие нажатия клавиш является наиболее важным для меня, поскольку именно это в конечном итоге генерирует значение обновлений

  3. При загрузке страницы возникают следующие ошибки: [User1st] Произошла ошибка при извлечении кода языка. TypeError: Невозможно вызвать метод "getAttribute" из неопределенного

    4.cghjavascript.StrictErrorReporter: runtimeError: message = [Указан неверный или недопустимый селектор (селектор: '*,: x' ошибка: недопустимый селектор: *: x).] sourceName = https: // ???/jquery-1.10.2.min.js] line = [3] lineSource = [null] lineOffset = [0]

некоторый код:

 WebClient webClient = new WebClient(BrowserVersion.CHROME);
        webClient.getOptions().setRedirectEnabled(true);
        webClient.getOptions().setUseInsecureSSL(true);
        webClient.getOptions().setJavaScriptEnabled(true);
        webClient.setAjaxController(new NicelyResynchronizingAjaxController());
        webClient.waitForBackgroundJavaScript(5000);
        final HtmlPage page = webClient.getPage(WEBSITE_URL);
        HtmlForm loginForm = page.getFormByName("login");
        HtmlTextInput userIdField = loginForm.getInputByName("USERID");
        HtmlPasswordInput passwordField = loginForm.getInputByName("USERPASSWORD");
        userIdField.type("ID");
        passwordField.setText("PASSWORD");

Далее я просто перебираю поля ввода формы и вижу их значение.

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

...