Robotium 关于 ListView 的滑动点击

uncle · 2014年12月09日 · 最后由 Tomcat 回复于 2015年06月17日 · 2041 次阅读

关于 ListView 的点击有很多版本,在这里也跟大家分享一下我的这个版本
嘿嘿
欢迎大家指正

/**
*我的需求是找列表中符合某种条件的Item
*可以点进去查看 
*思路:滑动一个,判断一个,也就是说,每次点击的都是当前屏幕的第一个
*/ 
public void findItem() {
        solo.sleep(_1S);
        //获取listView 随便怎么获取
        ListView listView = solo.getView(ListView.class, 0);

        if (listView.getCount() == 0) {
            assertEquals("", "列表为空");
        }
        int clickLine = 1;
        int oneScreenCount = listView.getChildCount();
        for (int index = 0, size = listView.getCount(); index < size; index++) {
            log("列表点击第" + (index + 1) + "个");
            solo.clickInList(clickLine);
            if ( your conditions) {
                log("列表符合条件的是第" + (index + 1) + "个");
                //break;
                return;
            }
            if (index >= (size - oneScreenCount) || (size <= oneScreenCount)) {
                //滑动到了列表的最后一屏
                clickLine = clickLine + 1;
            } else {
                clickLine = 1;
            }
            if (index == (size - 1)) {
                assertEquals("", "当前没有符合条件的东西");
            }
            solo.goBack();
            solo.scrollListToLine(0, index + 1);
        }

        //如果return换成break  此时点击clickLine就是你想要的了
        //solo.clickInList(clickLine);
    }
共收到 5 条回复 时间 点赞

这个代码不太符合规范. 函数就像你要你测试的功能一样, 没有输入都硬编码岂不是很伤.
如何找, 找什么, 需要体现在函数和参数中.

#1 楼 @seveniruby 怎么找,就是点完一个,滑动一个,每次都点第一个,找到符合你需求的为止;找什么 需要根据自己的需求判断添加; 可能这也暴露了我这个方法的缺陷,方法的主体不能复用。

好慢好笨的方法╮(╯△╰)╭

#3 楼 @weamylady 求指点啊~

你可以试试
ArrayList clickInList(int line, int index)
Clicks the specified list line in the ListView matching the specified index and returns an ArrayList of the TextView objects that the list line is displaying.

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