【问题标题】:Drag & Drop Espresso拖放浓缩咖啡
【发布时间】:2016-04-09 18:48:23
【问题描述】:

是否可以通过 Espresso 执行拖放操作?为了接受自动化测试中的某些条件,我需要向下移动一个视图(沿直线)。

【问题讨论】:

    标签: android android-espresso android-instrumentation


    【解决方案1】:

    您可以使用 GeneralSwipeAction 执行拖放操作。

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

    您也可以自定义位置以满足您的要求。

    【讨论】:

    • swipeDown(), swipeUp() 对我不起作用,因为我需要将圆圈移动到特定位置。
    • 您的代码在其他情况下对我有用。谢谢。
    【解决方案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();
        }
    

    【讨论】:

    • 这个方法怎么称呼?我想测试一些不同的东西,但这可以作为一个起点。拖动(InstrumentationRegistry.getInstrumentation(),0,100,0,100,20);
    • 这个调用会抛出一个 SecurityException:注入到另一个应用程序需要 INJECT_EVENTS 权限。而且此权限仅适用于系统应用程序...
    • 假设您想将一个视图拖到另一个视图上,您​​将如何获得目标视图在 espresso 中的坐标?
    猜你喜欢
    • 1970-01-01
    • 2015-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多