问题描述
我正在使用UiAutomator的Espresso编写自动化测试,并且试图在id为'R.id.message'的editText对话框中设置文本。 editText dialog
我已经尝试了在互联网上看到的所有内容,但对我没有任何帮助,除了从层次结构视图中获取文字ID并按原样编写之外:
UiAutomatorUtil.findUiObjectById(16908291).setText("1234");
显然这不是解决方案,所以我试图了解如何自动将文本插入给定视图。
该视图之前没有文本,因此使用withText
/ findUiObjectByText
并不是可选的。
我也尝试过onView(ViewMatchers.withId(R.id.message)).inRoot(isDialog()).perform(typeText("1234"));
和类似的替代方法,但是它总是无法正常工作(没有错误,测试将按原样继续,但是不会键入文本)
此外,在打开对话框时,文本字段已经聚焦,因此,如果可能的话,也可以选择只写文本而不先选择视图的解决方案。
我不知道我还能做些什么才能使其正常工作。 有什么帮助吗?
解决方法
由于测试可以继续进行而没有错误,并且您还提到了文本视图已经集中,请尝试使用typeTextIntoFocusedView:
onView(withId(R.id.message)).inRoot(isDialog()).perform(typeTextIntoFocusedView("1234"));
typeText
在开始发送键事件之前,总是对可编辑字段进行简单的轻击以获取焦点,有时,当视图已经聚焦时,轻击会导致不良行为。