Appium 在 java-client 4.1.0 中 scrollTo () 的替代方法

zuiniao123 · 2016年08月20日 · 最后由 灰太狼 回复于 2016年08月22日 · 901 次阅读

java-client 4.1.0 中彻底去掉了 scrollTo() 的相关方法,看到有几个小伙伴问怎么解决的,楼主分享下自己的方法:

1.将 java-client 改回 4.0.0 及以下,用 maven 的小伙伴可能在 pom.xml 中会默认 latest


2.用 swipe 代替,这也是官方给的建议:

楼主改了下:

/** 滑动查找 */
    public void swipeSearch(int times,By by) {
        for (int i = 0; i < times; i++) {
            boolean a = isElementExist(by);
            if (a) {
                log.info("在第" + (i + 1) + "次找到了");
                //找到后让该子项位置往上些,得以完全暴露
                //滑动的距离根据自己app和手机尺寸来
                driver.swipe(543, 1650, 543, 1000, 2000);
                break;
            } else {
                log.info("在第" + (i + 1) + "次没找到");
              //下面是滑动屏幕,和上面那个swipe不一样
                driver.swipe(543, 1650, 543, 418, 2000);
            }
            if (i==times-1) {
                //就是说滑动到最后一次了还找不到的话就判断为失败
                log.info("最后一次还没有找到");
                assertFail(by);
            }
        }
    }

/** 元素是否存在 */
    public boolean isElementExist(By by) {
        try {
            driver.findElement(by);
            return true;
        } catch (NoSuchElementException nee) {
            return false;
        }
    }

/** 判断为失败 */
public void assertFail(By by) {
        log.error("对元素:" + by + "采取的操作失败啦");
        Assert.fail("对元素:" + by + "采取的操作失败啦");
    }

3、用 android 的 uiautomator 中的 UiScrollable(以前有试验过还是 ok 的)或者 iOS 中 UIAutomation(这个就不会了)。

共收到 2 条回复 时间 点赞

之前就觉得 scrollTo 方法不好用,

楼主的绝对坐标可以试着修改为获取屏幕分辨率然后再计算坐标,这样可以做到设备兼容

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