我正在对搜索字段进行自动化测试,但是typeText()输入搜索文本的速度比用户快得多,因此搜索字段的自动完成功能在每次按键后都没有时间响应。
Slow down Espresso中提出的一种解决方案建议使用IdlingResource,但我希望有一个更简单的解决方案。
类似的问题是Espresso - typeText() not working correclty, sometimes letters are missing,但由于输入了全文而有所不同,只是对每个键入字符做出响应的代码没有足够的时间来响应。
如何强制Espresso在搜索字段中键入字符的速度足够慢,以使自动完成功能有足够的时间完成操作?调整自动完成功能以响应人类的打字速度。
答案 0 :(得分:0)
要在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)));
}
}
}