所以我最近开始在我现有的一个android项目中胡乱使用浓缩咖啡。
一切都很顺利,直到我发现我的程序中有AutoCompleteTextView。我似乎不明白如何正确地单击自动完成列表中的第一项。实际上,我甚至不确定在这个例子中使用哪个,onView()onData()

最佳答案

我想我找到了一个比公认答案更干净的方法!
onData(equalTo("ITEM")).inRoot(RootMatchers.isPlatformPopup()).perform(click());
故障:
onData(x)这将在下拉列表中找到呈现与x匹配的数据对象的视图。数据由Adaptor提供给AutoCompleteTextView,因此它可以是Adaptor提供的任何类型的对象,它可能不是视图。您需要使用标准的hamcrest core matchers来完成这个(equalToinstanceOf等),而不是(withTextwithId等)。试图找到这是什么对象以及如何匹配它可能会很痛苦,但没有一种更简洁的方法:适配器中有很多项,有些视图甚至还不在层次结构中,因此onView无法工作!onData将确保加载与数据匹配的视图。checkouthere(这是onData返回的内容)和here(这将加载匹配的数据)
inRoot(RootMatchers.isPlatformPopup())因此,下拉菜单位于另一个窗口上,而不是您的活动所运行的默认窗口。所以我们必须指定要搜索该窗口。接受的答案使用RootMatchers.withDecorView(not(is(mActivityRule.getActivity().getWindow().getDecorView()))),它似乎与任何非默认窗口匹配。
不管怎么说是别人。

08-05 08:34