我正在尝试为RTL语言编写UI测试。这是一个场景。我有一个AutoCompleteTextView,当我尝试标记用户(“ @user”)时,会在其中显示建议用户的下拉列表。当我手动键入字符串时,这适用于RTL和LTR语言。 但是,如果我尝试使用espresso进行功能测试,则无法正常工作。
这是我尝试编写UI测试的方式:
每当我告诉编辑文本使用onView(withId(R.id.message_input_field)).perform(typeText("@u"))
键入“ @u”时,Espresso都会生成按键事件以将字符注入到编辑文本中。像“ KEY_DOWN_SHIFT”,“ KEY_DOWN_2”,“ KEY_UP_SHIFT”,“ KEY_UP_2”之类的,它键入“ @”,依此类推。一切都适用于英语。
当我们尝试使用onView(withId(R.id.message_input_field)).perform(typeText("@פ"))
之类的RTL字符进行标记时,就会出现问题。 Espresso无法识别RTL字符并且无法生成键事件,最终抛出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)
我尝试执行replaceText(…)
而不是typeText(…)
,但是replaceText依次执行editText.setText(…)。但没有显示下拉菜单。很奇怪。
如何为这种情况编写UI测试?
P.S。您的设备语言是什么,或者当前选择的键盘是什么都没有关系。