appium 滑动在 4.4 的系统内是很好用的,那么 4.1~4.3 系统怎么办?

论坛的大神隐藏的太深,没有一个人出来帮忙,小弟不才,研究出来一个解决方案,希望对后面的同学有些启发。

其他手势的操作同理,大家自己去写。

    // 支持4.1~4.4
    // 支持WEBVIEW滑动,对于原生滑动,我另外封装了一个
    public void webview_swipe(AppiumDriver driver, Double sX, Double sY,
            Double eX, Double eY, Double duration) throws Exception { //
        JavascriptExecutor js;
        HashMap<String, Double> swipeObject;
        try {
            // 跳过引导页
            logger.info("----------开始滑动----------");

            int X;
            int Y;
            int sX2;
            int sY2;
            int eX2;
            int eY2;

            // 支持 4.1~4.3 的模式 ,调用 ADB直接滑动
            if (autoName.equals("Selendroid")) {
                X = driver.manage().window().getSize().getWidth();
                Y = driver.manage().window().getSize().getHeight();

                sX2 = (int) (X * sX);
                sY2 = (int) (Y * sY);
                eX2 = (int) (X * eX);
                eY2 = (int) (Y * eY);

                // logger.info("滑动11111111");
                Runtime.getRuntime().exec(
                        "adb -s " + devName + " shell input swipe " + sX2 + " "
                                + sY2 + " " + eX2 + " " + eY2);
                TimeUnit.SECONDS.sleep(1);
            } else {
                // 滑动
                js = (JavascriptExecutor) driver;
                swipeObject = new HashMap<String, Double>();
                swipeObject.put("startX", sX);
                swipeObject.put("startY", sY);
                swipeObject.put("endX", eX);
                swipeObject.put("endY", eY);
                swipeObject.put("duration", duration);
                js.executeScript("mobile: swipe", swipeObject);
                TimeUnit.SECONDS.sleep(1);
            }
            logger.info("----------开始滑动  ok----------");
        } catch (Exception ex) {
            // TODO Auto-generated catch block
            ex.printStackTrace();
            throw ex;
        } finally {
            // 释放变量
        }

    }


===========================================================================================
    // 为了支持4.1~4.4
    // 重写 滑动方法
    // 支持原生界面滑动
    public void tap_swipe(AppiumDriver driver, int sX, int sY, int eX, int eY,
            int duration) throws Exception { //
        try {
            logger.info("----------开始滑动----------");
            // 支持 4.1~4.3 的模式 ,调用 ADB直接滑动
            if (autoName.equals("Selendroid")) {
                Runtime.getRuntime().exec(
                        "adb -s " + devName + " shell input swipe " + sX + " "
                                + sY + " " + eX + " " + eY);
            } else {
                driver.swipe(sX, sY, eX, eY, duration * 1000);
            }
            TimeUnit.SECONDS.sleep(duration);

            logger.info("----------开始滑动  ok----------");
        } catch (Exception ex) {
            // TODO Auto-generated catch block
            ex.printStackTrace();
            throw ex;
        } finally {
            // 释放变量
        }

    }


↙↙↙阅读原文可查看相关链接,并与作者交流