Làm thế nào để bạn bấm vào một menuItem trong một NavigationView từ thư viện thiết kế bằng cách sử dụng Espresso? Nó hoạt động tốt trên một thiết bị lớn hơn, nơi toàn bộ menu có thể nhìn thấy nhưng trong cảnh quan hoặc thiết bị nhỏ hơn dưới cùng của trình đơn của tôi là tắt màn hình và tôi không thể tìm ra một cách để di chuyển/swipe để các menuItems vì vậy tôi có thể nhấp vào chúng.Làm thế nào để bạn bấm vào một menuItem trong NavigationView trên Android khi thử nghiệm với Espresso?
Calling:
onView(withText(R.string.contact_us)).perform(scrollTo()).check(matches(isDisplayed())).perform(click());
Tạo điều sau đây:
Nguyên nhân: java.lang.RuntimeException: Hành động sẽ không được thực hiện vì xem mục tiêu không phù hợp với một hoặc nhiều sau ràng buộc: (chế độ xem có khả năng hiển thị hiệu quả = VISIBLE và là hậu duệ của: (được gán từ class: class android.widget.ScrollView hoặc là có thể gán từ class: class android.widget.Horizon talScrollView)) Chế độ xem mục tiêu: "NavigationMenuItemView {id = -1, mức hiển thị = VISIBLE, chiều rộng = 888, chiều cao = 144, có tiêu điểm = sai, có tiêu điểm = false, has-window-focus = true, là -clickable = false, được kích hoạt = true, is-focus = false, is-focusable = false, is-layout-requested = false, được chọn = false, root-is-layout-requested = false, có-input-kết nối = false, x = 0,0, y = 1653,0, text = Liên hệ, đầu vào-type = 0, ime-target = false, có-liên kết = false}"
NavigationView thừa hưởng từ FrameLayout và đang thực hiện thay đổi canvas để cuộn. https://developer.android.com/reference/android/support/design/widget/NavigationView.html
Tôi đã cố gắng viết customViewAction để từ từ cuộn màn hình bằng cách sử dụng tác vụ bên dưới và kiểm tra xem menuItem có hiển thị và không tiếp tục cuộn, nhưng tôi không thể làm việc đó.
CoordinatesProvider coordinatesProvider = new CoordinatesProvider() {
public float[] calculateCoordinates(View view) {
float[] xy = GeneralLocation.BOTTOM_CENTER.calculateCoordinates(view);
xy[0] += 0.0F * (float)view.getWidth();
xy[1] += -0.083F * (float)view.getHeight();
return xy;
}
};
onView(withId(R.id.navigation_view)).perform(new GeneralSwipeAction(Swipe.SLOW,
coordinatesProvider, GeneralLocation.TOP_CENTER, Press.FINGER));
onView(withText(R.string.contact_us)).check(matches(isDisplayed())).perform(click());
Có ai đã tìm ra cách kiểm tra điều hướngXem trên Espresso chưa? Tôi khá chắc chắn logic của tôi đằng sau customViewAction sẽ làm việc nhưng tôi không thể làm cho nó hoạt động.