2016-03-10 1 views
3

Вот простая команда для соответствия текстовому полю и введите переменную name.Невозможно ввести символы Юникода в Espresso

private final String name = "foo"; 
onView(withId(R.id.editTextName)).perform(typeText(name)); 

Он отлично работает в моем приложении с помощью «foo». Однако:

private final String name = "á"; 
private final String name = "\u00E1"; 

В обоих этих случаях onView линия терпит неудачу, обвиняя неспособность найти представление в поле зрения предыдущего занятия по:

android.support.test.espresso.NoMatchingViewException: No views in hierarchy found matching: with id: <myappid>:id/listViewAccounts 

Кажется, что Espresso не может обрабатывать символы Unicode и не получится если их попросят ввести их. Это работает на AVD с помощью «Английской (США) Android-клавиатуры (AOSP)» или «Английской (США) образца« Мягкая клавиатура ». Последний также сглаживает двойные буквы, что, вероятно, является отдельной проблемой в том, как быстро Espresso входит в них.

Кто-нибудь сталкивался с этим раньше? Это Espresso, или используемая клавиатура, или что-то еще?

Я поменял мягкую клавиатуру Android на US International, которая может долго нажать a, чтобы получить á, но Espresso терпит неудачу одинаково.

Update:

Использование á действительно оставить это в трассировке стека (но \u00E1 не делает):

java.lang.RuntimeException: Failed to get key events for string á (i.e. current IME does not understand how to translate the string into key events). As a workaround, you can use replaceText action to set the text directly in the EditText field.

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

+0

У меня была такая же ошибка, но в моем случае использование кода ключа не помогло. – Vic

ответ

1
onView(withId(R.id.editTextName)).perform(replaceText(name)); 

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

Эспрессо явно советует обходной путь.