10

Espresso 経由でドラッグ & ドロップ操作を実行できますか? 自動化テストでいくつかの条件を受け入れるために、ビューを 1 つ下 (直線) に移動する必要があります。

4

2 に答える 2

12

GeneralSwipeAction を使用して、ドラッグ & ドロップを実行できます。

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

要件に合わせて場所をカスタマイズすることもできます。

于 2016-02-11T05:38:23.667 に答える
2

それが私がやった方法です。そのようなビューで何が起こるべきかにより多くアクセスできます。しかし、受け入れられた回答はドラッグ&ドロップも実行します。

  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();
    }
于 2016-02-22T09:07:22.780 に答える