2016-02-09 34 views
7

Có thể thực hiện thao tác thả & qua Espresso không? Tôi cần phải di chuyển một góc nhìn xuống (theo đường thẳng) để chấp nhận một số điều kiện trong thử nghiệm tự động hóa của tôi.Kéo và thả Espresso

Trả lời

8

Bạn có thể sử dụng GeneralSwipeAction để thực hiện kéo thả &.

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

Bạn cũng có thể tùy chỉnh vị trí để đáp ứng yêu cầu của mình.

+0

swipeDown(), swipeUp() không hoạt động vì tôi cần di chuyển vòng tròn đến vị trí cụ thể. – F1sher

+1

Mã của bạn trở nên hữu ích đối với tôi trong trường hợp khác. Cảm ơn bạn. – F1sher

3

Đó là cách tôi đã thực hiện. Bạn có nhiều quyền truy cập vào những gì sẽ xảy ra với chế độ xem của bạn như thế. Nhưng chấp nhận câu trả lời thực hiện kéo & thả quá.

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

làm thế nào để bạn gọi phương pháp này? Tôi muốn thử nghiệm một cái gì đó khác nhưng nó có thể là một điểm khởi đầu. kéo (InstrumentationRegistry.getInstrumentation(), 0, 100, 0, 100, 20); – raultm

+1

cuộc gọi này ném cho tôi một SecurityException: Tiêm vào một ứng dụng khác yêu cầu quyền INJECT_EVENTS. Và quyền này chỉ dành cho các ứng dụng hệ thống ... – raultm

+0

câu hỏi của tôi là http://stackoverflow.com/questions/40759085/android-espresso-how-can-i-perform-onlongclick-and-slidedown-continued – raultm