2016-02-09 13 views
7

क्या एस्प्रेसो के माध्यम से ड्रैग & ड्रॉप कार्रवाई करना संभव है? मेरे स्वचालन परीक्षण में कुछ शर्तों को स्वीकार करने के लिए मुझे एक दृश्य को नीचे (सीधे पंक्ति में) स्थानांतरित करने की आवश्यकता है।खींचें और ड्रॉप करें एस्प्रेसो

उत्तर

8

आप ड्रैग & ड्रॉप करने के लिए सामान्यस्वाइपएक्शन का उपयोग कर सकते हैं।

public static ViewAction swipeUp() { 
return new GeneralSwipeAction(Swipe.FAST, GeneralLocation.BOTTOM_CENTER, 
    GeneralLocation.TOP_CENTER, Press.FINGER); 
} 

आप अपनी आवश्यकता को पूरा करने के लिए स्थान को भी अनुकूलित कर सकते हैं।

+0

स्वाइपडाउन(), swipeUp() मेरे लिए काम नहीं किया क्योंकि मुझे सर्कल को विशिष्ट स्थान पर ले जाने की आवश्यकता थी। – F1sher

+1

आपका कोड अन्य मामले में मेरे लिए उपयोगी हो गया। धन्यवाद। – F1sher

3

यह है कि मैंने इसे कैसे किया है। आपके पास इस तरह के दृश्य के साथ क्या होना चाहिए इसके बारे में आपके पास अधिक पहुंच है। लेकिन स्वीकार किए गए उत्तर ड्रैग & ड्रॉप भी करें।

public static void drag(Instrumentation inst, float fromX, float toX, float fromY, 
          float toY, int stepCount) { 
     long downTime = SystemClock.uptimeMillis(); 
     long eventTime = SystemClock.uptimeMillis(); 

     float y = fromY; 
     float x = fromX; 

     float yStep = (toY - fromY)/stepCount; 
     float xStep = (toX - fromX)/stepCount; 

     MotionEvent event = MotionEvent.obtain(downTime, eventTime, 
       MotionEvent.ACTION_DOWN, x, y, 0); 
     inst.sendPointerSync(event); 
     for (int i = 0; i < stepCount; ++i) { 
      y += yStep; 
      x += xStep; 
      eventTime = SystemClock.uptimeMillis(); 
      event = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_MOVE, x, y, 0); 
      inst.sendPointerSync(event); 
     } 

     eventTime = SystemClock.uptimeMillis(); 
     event = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_UP, x, y, 0); 
     inst.sendPointerSync(event); 
     inst.waitForIdleSync(); 
    } 
+0

आप इस विधि को कैसे कहते हैं? मैं कुछ अलग परीक्षण करना चाहता हूं लेकिन यह एक शुरुआती बिंदु हो सकता है। ड्रैग (इंस्ट्रुमेंटेशन रजिस्ट्री.जेट इंस्ट्रुमेंटेशन(), 0, 100, 0, 100, 20); – raultm

+1

यह कॉल मुझे एक सुरक्षा अपवाद फेंकता है: किसी अन्य एप्लिकेशन को इंजेक्शन करने के लिए INJECT_EVENTS अनुमति की आवश्यकता होती है। और यह केवल सिस्टम ऐप्स के लिए अनुमति है ... – raultm

+0

मेरा प्रश्न है http://stackoverflow.com/questions/40759085/android-espresso-how-can-i-perform-onlongclick-and-slidedown-continued – raultm

संबंधित मुद्दे