Почему HtmlButton.click () в HtmlUnit работает в IntelliJ, а не в JAR? - PullRequest
0 голосов
/ 11 декабря 2018

Я пытаюсь зайти на сайт с помощью HtmlUnit.Форма входа в систему отправляется с щелчком элемента button.Строки моего кода Kotlin, где что-то идет не так, выглядят следующим образом:

val submitButton: HtmlButton = loginForm
    .getFirstByXPath<HtmlButton>("//button[@type='submit']")
val result: HtmlPage? = submitButton.click()
return result

Как упомянуто в заголовке, кажется, это хорошо работает в IntelliJ IDEA, но не когда я собираю JAR-артефакт.Скорее всего, result создает копию исходной страницы входа, а не домашней страницы пользователя.Файлы cookie веб-клиента кажутся идентичными до и после вызова click ().Я извлек соответствующий файл CLASS из JAR, и он имеет тот же хеш SHA-256, что и IntelliJ, созданный для отладки.

Я отключил JavaScript, потому что он не нужен для моих целей, но яснова включил его и получил предупреждающие сообщения, которые выглядели примерно так:

[LOADS LOGIN PAGE HERE]
com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl notify
WARNING: Obsolete content type encountered: 'text/javascript'.
com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl notify
WARNING: Obsolete content type encountered: 'text/javascript'.
com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl notify
WARNING: Obsolete content type encountered: 'text/javascript'.
com.gargoylesoftware.htmlunit.javascript.host.css.CSSStyleSheet isValidCondition
WARNING: Unhandled CSS condition type 'PREFIX_ATTRIBUTE_CONDITION'. Accepting it silently.
com.gargoylesoftware.htmlunit.javascript.StrictErrorReporter runtimeError
SEVERE: runtimeError: message=[An invalid or illegal selector was specified (selector: '*,:x' error: Invalid selector: *:x).] sourceName=[.../js/jquery-1.11.0.min.js] line=[2] lineSource=[null] lineOffset=[0]
com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl notify
WARNING: Obsolete content type encountered: 'text/javascript'.
com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl notify
WARNING: Obsolete content type encountered: 'text/javascript'.
com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl notify
WARNING: Obsolete content type encountered: 'text/javascript'.
[CLICKS BUTTON HERE]
com.gargoylesoftware.htmlunit.javascript.host.css.CSSStyleSheet isValidCondition
WARNING: Unhandled CSS condition type 'PREFIX_ATTRIBUTE_CONDITION'. Accepting it silently.
com.gargoylesoftware.htmlunit.javascript.StrictErrorReporter runtimeError
SEVERE: runtimeError: message=[An invalid or illegal selector was specified (selector: '*,:x' error: Invalid selector: *:x).] sourceName=[.../js/jquery-1.11.0.min.js] line=[2] lineSource=[null] lineOffset=[0]

Я отмечаю, что сообщения "Обнаружен устаревший тип содержимого" не повторялись, а остальные были.Я не уверен, что это говорит.

Я пытался измерить, сколько времени заняла линия submitButton.click(), с помощью вызовов java.time.Instance.now() до и после.Время отладки заняло 4-5 секунд;в JAR (там, где он не работает) потребовалось всего 2-3.

Я не знаю, что еще в моем коде могло бы иметь значение.

...