2015-05-22 14 views

उत्तर

27

यदि स्क्रॉलव्यू के निचले भाग में आपको एक दृश्य ढूंढने और उसके खिलाफ कुछ मिलान करने की आवश्यकता है, तो इसे प्रदर्शित करने के लिए आवश्यक किसी अन्य क्रिया से पहले scrollTo() कार्रवाई करें।

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

नोट: यदि दृश्य पहले से ही प्रदर्शित किया जाता है scrollTo कोई असर नहीं होगा तो आप सुरक्षित रूप से मामलों में यह उपयोग कर सकते हैं जब दृश्य

+3

यह कैसे आ 'NestedScrollView' के साथ काम नहीं करता है? –

+0

मैंने कोशिश नहीं की है, लेकिन इसे एक शॉट दें और इस मुद्दे के साथ एक नया प्रश्न लिखें – appoll

+4

केवल तभी काम करता है जब आप अपने बच्चे के तत्वों को जानते हों - यदि आप अंतिम तत्व को नहीं जानते हैं तो क्या करना है? – PKAP

1

भी प्रदर्शित किया जाता है यू की कोशिश कर सकते हैं:

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

यदि आपके पास android.support.v4.widget.NestedScrollView के अंदर एक दृश्य है स्क्रॉल के बजाय स्क्रू देखें() काम नहीं करता है।

+0

मैं इस विधि को कहां/कॉल करूं? – Ixx

+0

मुझे विश्वास है कि इस उत्तर में जो भी पूरी तरह से जागरूक नहीं है, उसके लिए जानकारी गुम है। कृपया पूर्ण उत्तर के लिए https://stackoverflow.com/questions/35272953/espresso-scrolling-not-working-when-nestedscrollview-or-recyclerview-is-in-coor जांचें –

2

पूर्णता (मोरोज़ोव के जवाब के आधार पर) के लिए, आप एक कस्टम ViewAction बजाय scrollTo() का जो उपयोग करने के लिए अनुमति देता है पारित कर सकते हैं, 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); 
} 

};

और इस तरह इसका इस्तेमाल:

onView(withId(R.id.onBottomOfScrollView)).perform(customScrollTo, click()); 
3
मेरे लिए

जब nestedScrollview का उपयोग कर मैं सिर्फ swipeUp (आप नीचे जाने के लिए चाहते हैं) यहाँ .. एक उदाहरण कॉल किया जाता है:

onView(withId(R.id.nsv_container)) 
       .perform(swipeUp());