Appium 为什么 appium 升级到 1.3.4 的时候,导致无法滑动屏幕了。

云飞凌风 · 2015年01月12日 · 最后由 qixnGitHub 回复于 2017年01月09日 · 2187 次阅读

如下,升级 appium 到 1.3.4, 用下面的方法滑动屏幕失败。该如何处理?请大神指教。

public static void swipeScreen(Double startX, Double startY, Double endX,
    Double endY, Double duration, int repeat, AppiumDriver driver) {
    JavascriptExecutor 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);
            System.out.println("滑动屏幕成功");
        } catch (WebDriverException ex) {
            System.out.println("滑动屏幕失败");
        }
    }
}
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 20 条回复 时间 点赞
driver.swipe(160, 300, 160, 10, 2);

appium 封装的方法,这样为什么不行呢。

错误信息哪?

1.0 已经不支持 JS 注入了

#2 楼 @xiaomayi0323
swipeScreen(160.0, 300.0, 160.0, 10.0, 1.0, 2, driver);
没有报任何错误,就是不滑动了。之前在 1.2.0 的时候还好好的。

#3 楼 @tspring 那请问现在应该怎么处理呢?

#5 楼 @wangcityboy driver.swipe(160.0, 300.0, 160.0, 10.0, 1.0, 2)

可以尝试使用 mobile: flick 看看是否好用。

#6 楼 @tspring 老兄,DriverManager.getDriver 中,getDriver 是要带参数的。

#8 楼 @wangcityboy 就是一个 driver 而已,我这边封装了

#7 楼 @wanglha 不错,挺好用的。。。谢谢啊。。

@wangcityboy 因为我也刚刚遇到了这个问题,也是今天上午才解决的:)

#11 楼 @wanglha 按照方向滑动的就不行的啦?你解决了没?

public  static void scrollMultiTest(String direction, int repeat,AppiumDriver driver) {
    JavascriptExecutor js = (JavascriptExecutor) driver;
    HashMap<String, String> scrollObject = new HashMap<String, String>();
    scrollObject.put("direction", direction);
    for (int i = 0; i < repeat; i++) {
        try {
            js.executeScript("mobile:scroll", scrollObject);
        } catch (WebDriverException ex) {

            System.out.println("滑动失败");
        }
    }
}

#7 楼 @wanglha iOS 6.1.4 就滑动不了。

#1 楼 @wangcityboy 楼主,你这个问题解决了吗?我也碰到这个问题了,同事 1.2.3.1 的 appium 就可以滑动成功,我的 1.3.4.1 的就不行

#14 楼 @mzl19860128 把 swipe 换成 flick

#15 楼 @wangcityboy 具体代码是什么你还记得吗?能不能贴上来我看下,谢啦

#16 楼 @mzl19860128

public static void swipeScreen(Double startX, Double startY, Double endX,
        Double endY, Double duration, int repeat, IOSDriver driver) {
        JavascriptExecutor 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);
        for (int i = 0; i < repeat; i++) {
            try {
                js.executeScript("mobile: flick", swipeObj);
            } catch (Exception ex) {
                System.out.println("滑动屏幕失败");
            }
        }
    }

#1 楼 @wangcityboy tks~,多谢啦,我试试

#7 楼 @wanglha mobile:flick 这个参数是哪里来的???有个固定列表还是自己定义的?

#7 楼 @wanglha mobile:flick 是自定义的还是官方提供的?如果我不想滑动,而是输入动作,用 mobile 后面跟什么??

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