Appium 【已解决】怎么写向下滑动屏幕的操作?

贝斯特 · 2014年04月09日 · 最后由 Evan 回复于 2014年04月10日 · 1690 次阅读

环境:appium android java
我要控制的控件不在当前的屏幕中,要向下滑动 1000px 才能看到这个控件,
这个滑动的操作要怎么写?

共收到 14 条回复 时间 点赞

两种方法 你可以试试

根据方向来滑动

public static void scroll(String direction) {
    js = (JavascriptExecutor) driver();
    HashMap<String, String> scrollObject = new HashMap<String, String>();
    scrollObject.put("direction", direction);
    js.executeScript("mobile: scroll", scrollObject);
}

根据坐标来滑动

public static void swipe(Double startX, Double startY, Double endX,
        Double endY, Double duration, int repeat) {
    js = (JavascriptExecutor) driver();
    HashMap<String, Double> swipeObj = new HashMap<String, Double>();
    swipeObj.put("startX", startX);
    swipeObj.put("startY", startY);
    swipeObj.put("endX", endX);
    swipeObj.put("endY", endY);
    swipeObj.put("duration", duration);
    // 拖动
    for (int i = 0; i < repeat; i++) {
        try {
            js.executeScript("mobile: swipe", swipeObj);
        } catch (WebDriverException ex) {
            saveScreenShot();
            log.logException(ex);
        }
    }
}

@bestfei 请问问题解决了没?

#1 楼 @sundaxian 第一方法的 direction 传的参数是什么?第二个方法 duration 的传参是什么?

#2 楼 @lihuazhang 还没,正在琢磨中。。。。

#1 楼 @sundaxian
swipeObj.put("startX", 0.0);
swipeObj.put("startY", 133.0);
swipeObj.put("endX", 0.0);
swipeObj.put("endY", 710.0);
swipeObj.put("duration", 0.5);
我这样传参,为啥没有向下滑动?

#1 楼 @sundaxian 成功了,是我参数填反了谢谢

#7 楼 @bestfei 把帖子标记为解决吧

#9 楼 @bestfei 还有一个更简单的方法,就是 AppiumDriver 的 swipe 方法

#10 楼 @kevin_xu_v 可惜 Appium1.0 里的这个方法,一调用就出错,我已经在 Google Group 里询问了。

#6 楼 @bestfei 没看明白, 参数反了, 也会反着滑的. 按理说应该也 ok 啊
如果真实滑动距离不能满足, 滑动会有异常的


driver.scrollToExact("Test");
driver.scrollTo("Test");

用 1 楼的方法怎么试都不行, 还是自己通过.来找比较靠谱.

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册