Appium 在指定控件内做上下滑动

时间:2021-08-05 16:40:13

那天写了个 控件内点击指定位置:http://testerhome.com/topics/2247

今天重新改了下,对控件内的滑动,如下控件我需要在控件里面滑动,选取:

Appium 在指定控件内做上下滑动

具体代码如下(目前只做滑动一次,有需要可以自己再做修改,如果有更好方式操作,求推荐):
/**
     * 控制滑动方向
     */
    public enum Heading {
        UP, DOWN
    }

    /**
     * 控件内上下滑动
     *
     * @param step    测试步骤
     * @param by      控件定位方式
     * @param heading 滑动方向 UP  DOWN
     */
    public void swipeControl(String step, By by, Heading heading) {
        // 获取控件开始位置的坐标轴
        Point start = this.findElement(driver, by).getLocation();
        int startX = start.x;
        int startY = start.y;

        // 获取控件坐标轴差
        Dimension q = this.findElement(driver, by).getSize();
        int x = q.getWidth();
        int y = q.getHeight();
        // 计算出控件结束坐标
        int endX = x + startX;
        int endY = y + startY;

        // 计算中间点坐标
        int centreX = (endX + startX) / 2;
        int centreY = (endY + startY) / 2;

        switch (heading) {
            // 向上滑动
            case UP:
                driver.swipe(centreX, centreY + 30, centreX, centreY - 30, 500);
                break;
            // 向下滑动
            case DOWN:
                driver.swipe(centreX, centreY - 30, centreX, centreY + 30, 500);
                break;
        }
        log.info(step);
    }