Android 在回收器视图中单击:浓缩咖啡
我试图点击回收器视图中的一个菜单项,我有以下代码Android 在回收器视图中单击:浓缩咖啡,android,automation,android-espresso,Android,Automation,Android Espresso,我试图点击回收器视图中的一个菜单项,我有以下代码 onView(allOf(withId(R.id.section_list),isDisplayed())).perform(RecyclerViewActions.actionOnItem(hasDescendant(withText("ABC")), MyViewAction.clickChildViewWithId(R.id.payment_menu))); MyViewAction如下所示: class MyViewAction {
onView(allOf(withId(R.id.section_list),isDisplayed())).perform(RecyclerViewActions.actionOnItem(hasDescendant(withText("ABC")), MyViewAction.clickChildViewWithId(R.id.payment_menu)));
MyViewAction如下所示:
class MyViewAction {
public static ViewAction clickChildViewWithId(final int id) {
return new ViewAction() {
@Override
public Matcher<View> getConstraints() {
return null;
}
@Override
public String getDescription() {
return "Click on a child view with specified id.";
}
@Override
public void perform(UiController uiController, View view) {
View v = view.findViewById(id);
v.performClick();
}
};
}
类MyViewAction{
公共静态视图操作单击id为(最终int id)的子视图{
返回新的ViewAction(){
@凌驾
公共匹配器getConstraints(){
返回null;
}
@凌驾
公共字符串getDescription(){
返回“单击具有指定id的子视图”;
}
@凌驾
公共作废执行(UiController UiController,视图){
视图v=View.findViewById(id);
v、 performClick();
}
};
}
- 当我测试它时,我可以看到滚动发生在正确的位置,但是单击失败,出现以下错误
我不知道这是否是您面临的错误的根本原因,但您应该严格遵守
matcher
和action
之间的区别,即
RecyclerViewActions.actionOnItem(
hasDescendant(withText("ABC")),
MyViewAction.clickChildViewWithId(R.id.payment_menu)
)
应该写成
RecyclerViewActions.actionOnItem(
<something-that-selects-R.id.payment_menu-in-your-view-item>,
click()
)
RecycleServiceActions.ActionItem(
,
单击()
)
这个something-that-selects-R.id.payment\u菜单-in-your-view-item
实际上是什么取决于视图的设置,可能很难正确定义,因此可能是其他方法之一(actionholderitem
e.g.)可能更合适。这也应该运行得更快,因为它可以直接跳转到由特定的视图持有者标识的视图,而Matcher
版本只能逐项“滚动”您的RecyclerView
并检查每个新绑定的版本。怎么样:
onView(withId(R.id.section_list))
.perform(
RecyclerViewActions.actionOnItem(
hasDescendant(withId(R.id.payment_menu)),
ViewActions.click()
)
);
是否在设备开发设置中禁用了动画?