2015-05-22 31 views

Trả lời

27

Nếu ở dưới cùng của ScrollView, bạn cần tìm một khung nhìn và so khớp với nó, sau đó chỉ cần thực hiện hành động scrollTo() trên nó trước khi bất kỳ hành động nào yêu cầu hiển thị.

onView(withId(R.id.onBottomOfScrollView)) 
    .perform(scrollTo(), click()); 

Lưu ý: scrollTo sẽ không có hiệu lực nếu quan điểm đã được hiển thị để bạn có thể yên tâm sử dụng nó trong trường hợp khi xem sẽ được hiển thị

+3

Làm thế nào đến nay không hoạt động với 'NestedScrollView'? –

+0

Tôi chưa thử, nhưng hãy thử và viết một câu hỏi mới với vấn đề – appoll

+4

chỉ hoạt động nếu bạn biết các phần tử con của mình - phải làm gì nếu bạn không biết phần tử cuối cùng? – PKAP

1

Cũng u có thể thử:

public Matcher<View> getConstraints() { 
return allOf(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE), isDescendantOfA(anyOf(
     isAssignableFrom(ScrollView.class), isAssignableFrom(HorizontalScrollView.class), isAssignableFrom(NestedScrollView.class)))); 

Nếu bạn có chế độ xem bên trong android.support.v4.widget.NestedScrollView thay vì scrollView scrollTo() không hoạt động.

+0

Tôi đặt/gọi phương thức này ở đâu? – Ixx

+0

Tôi tin rằng câu trả lời này thiếu thông tin cho bất kỳ ai không nhận thức đầy đủ. Vui lòng kiểm tra https://stackoverflow.com/questions/35272953/espresso-scrolling-not-working-when-nestedscrollview-or-recyclerview-is-in-coor để biết câu trả lời đầy đủ –

2

Đối đầy đủ (dựa trên câu trả lời của Morozov), bạn có thể vượt qua một tùy chỉnh ViewAction thay vì scrollTo(), cho phép sử dụng NestedScrollView:

ViewAction customScrollTo = new ViewAction() { 

@Override 
public Matcher<View> getConstraints() { 
    return allOf(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE), isDescendantOfA(anyOf(
     isAssignableFrom(ScrollView.class), 
     isAssignableFrom(HorizontalScrollView.class), 
     isAssignableFrom(NestedScrollView.class))) 
    ); 
} 

@Override 
public String getDescription() { 
    return null; 
} 

@Override 
public void perform(UiController uiController, View view) { 
    new ScrollToAction().perform(uiController, view); 
} 

};

Và sử dụng nó như thế này:

onView(withId(R.id.onBottomOfScrollView)).perform(customScrollTo, click()); 
3

cho tôi khi sử dụng nestedScrollview tôi chỉ swipeUp (nếu bạn muốn đi xuống) .. đây là một cuộc gọi Ví dụ:

onView(withId(R.id.nsv_container)) 
       .perform(swipeUp()); 
Các vấn đề liên quan