Selenium, настройка ввода данных с использованием Java - PullRequest
0 голосов
/ 08 января 2019

Цель теста

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

Тест 1

Мой первоначальный способ сделать это был прямо, установить значение так же, как это делается с текстовыми полями:

webDriver.findElement(By.cssSelector(selector)).sendKeys("2018-11-02");

К сожалению, дата не копируется правильно.

enter image description here

Обратите внимание, что я пытался использовать другие форматы, и это ни к чему не привело.

Тест 2

Я пытался использовать Javascript для обновления полей.

JavascriptExecutor js = (JavascriptExecutor) webDriver;
js.executeScript("document.querySelector('" + selector + "').value='" + value + "'");

У меня был больший успех с этим, однако угловой дайджест, похоже, не обнаруживает изменений и не обновляет реактивную форму.

Я пытался запустить угловое обнаружение с помощью Javascript, но это не сработало, так как мы запускаем тест в тестовой среде, в которой установлена ​​соответствующая версия углового.

Я попытался нажать на родительский компонент и запустить:

ng.probe(getAllAngularRootElements()[0]).injector.get(ng.coreTokens.ApplicationRef).tick()

Я также получил родительский компонент на входе, используя document.querySelector, а также используя $ 1, и передал его в ng.probe, что также ни к чему не привело.

Другие решения:

Я проверил онлайн и попробовал различные решения, такие как:

  • Очистка поля перед запуском функции sendKeys.
  • Использование Javascript для удаления атрибута readonly

    document.querySelector ('"+ selector +"') .removeAttribute ('readonly', 0))

  • Использование разных форматов даты.
  • Нажатие на вход после обновления его значения.

Может кто-нибудь помочь решить эту проблему? Я проверил несколько потоков GitHub, и похоже, что у нескольких людей возникла та же проблема.

Версии программного обеспечения:

  • Селен-Ява 3.13.0
  • Chrome версия: версия 71.0.3578.98
  • Угловой 6

Обратите внимание: Невозможно использовать транспортир, поскольку Java уже используется в целях тестирования.

...