Как замедлить эспрессо typeText ()? - PullRequest
0 голосов
/ 05 марта 2019

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

Одно решение, предложенное в Slow down Espresso , предлагает использовать IdlingResource, но я надеюсь, что есть более простое решение.

Аналогичная проблема была Espresso - typeText () notрабочая корректность, иногда пропускаются буквы , но это отличается, потому что вводится полный текст, просто коду, который отвечает на каждый набранный символ, не дается достаточно времени для ответа.

Как заставитьЭспрессо достаточно медленно набирать символы в поле поиска, чтобы автозаполнение имело достаточно времени для завершения?Автозаполнение настроено на скорость набора текста человеком.

1 Ответ

0 голосов
/ 05 марта 2019

Чтобы ввести ввод в TextView, мы можем вводить по одному символу за раз, чтобы у любой логики автозаполнения было время для завершения.Это имитирует пользователя, который печатает лучше, чем вставка полной строки текста сразу (что больше похоже на то, как пользователь копирует и вставляет текст в поле).

Мы вводим первый символ с помощью typeText () и оставшиеся символы с typeTextIntoFocusedView () , потому что typeText () выполняет нажатие на представление перед вводом, чтобы принудительно переключить представление в фокус, если представление уже содержит текст,нажатие может поместить курсор в произвольную позицию в тексте.

private void typeInputIntoTextView(int textViewId, String text) {
    if (0 != text.length()) {
        Espresso.onView(ViewMatchers.withId(textViewId)).perform(ViewActions.typeText(text.substring(0, 1)));
        for (int i = 1; i < text.length(); i++) {
            Espresso.onView(ViewMatchers.withId(textViewId)).perform(ViewActions.typeTextIntoFocusedView(text.substring(i, i + 1)));
        }
    }
}
...