• robotium中一些操作——上拉加载,下拉刷新,左右滑动等


    最近下载了一个叫拍照的软件进行练习,里面有大量的图片,很适合我想要做的一些操作。有关只有apk的情况在前面已经有说明。

    一.使用工具uiautomatorviewer

    ----- 为什么会使用这个工具?——开始使用的是hierarchyviewer,虽然它也很好用,但是对于某些控件它检测不到。

    ----- 这个工具的好处?——  它直接锁定你当前的操作页面,得到页面上的布局状况,控件类型,控件id

    -----如何使用?——在android sdk的tools中双击uiautomatorviewer.bat

                            

    -----注意点?——1.点击上面的按钮,出现如下提示:No Android devices were detected by adb,表示设备没有连接上android模拟器

                     ——2.打开的安卓模拟器需要是4.1以上的版本,打开4.1的版本有不同的反应:1)有报如下错误的 2)成功打开发现没有id

                     ——3.报如下错误:Error while obtaining UI hierarchy XML file: com.android.ddmlib.SyncException: Remote object doesn't exist!网上有说是打开的版本是4.1的,但是我打开4.4的也会报这个错误,只能重新打开了

                  

    二.相关操作

    1.点击某个控件

    public Activity a;
    
    public void test(){
       //获得当前activity
       a= solo.getCurrentActivity();
      //获取资源id
       int id = a.getResources().getIdentifie("platform_album_sort_btn", "id", a.getPackageName());
      //通过资源id找到控件
       v =a.findViewById(id);
      //点击控件
       solo.clickOnView(v);
       solo.sleep(2000);
    
    }
    View Code

    2.向下滚屏

    solo.scrollDown();

    只能实现一页内的滚动,不能滚动加载下一页

    3.滚动置顶

      solo .scrollToTop(); 

    4.返回上一个页面

    solo.goBack();

    5.上拉加载

            GridView gridview = (GridView) solo.getView("gridview");
            int[] location = new int[2];
            gridview.getLocationOnScreen(location);
            location[1] = location[1] + gridview.getBottom();
           // Log.i(TAG, "[Location x]:  " + Integer.toString(location[0]));
           // Log.i(TAG, "[Location y]:  " + Integer.toString(location[1]));
            //获取上拉加载更多拖动点的坐标
            if (solo.waitForView(gridview)) {
                int newlistcount, listcount = gridview.getCount();
                while (i<10) {
                    i++;
                    solo.scrollListToLine(gridview, listcount);
                    solo.sleep(500);
                    solo.drag(location[0] + 10f, location[0] + 10f,
                            location[1] - 10f, location[0] - 100f, 50);
                    
                    solo.takeScreenshot() ;
    
                    solo.sleep(2000);
                    newlistcount = gridview.getCount();
                    if (newlistcount == listcount) {
                        break;
                    } else {
                        listcount = newlistcount;
                     //   Log.i(TAG, "[List count]:  " + Integer.toString(listcount));
                    }
                }
            }

    6.下拉刷新

           GridView gridview=(GridView)solo.getView("gridview");
           int[] location=new int[2];
           gridview.getLocationOnScreen(location);//获取GridView的坐标
           solo.sleep(1000);
           solo.drag(location[0]+10,location[0]+10,location[1],location[1]+gridview.getHeight(),3);

    7.左右滑动

     solo.scrollToSide(Solo.RIGHT);   从右往左滑动

     solo.scrollToSide(Solo.LEFT);   从左往右滑动

    每次只滑动一张图片,想滑动多张用循环,但是我还不知道最后一张图片后怎么结束

    8.GridView和ListView

    GridView:就是一行并列几张照片的那种布局

    ListView:就是一行一个的列表

    这2个控件的上拉加载是类似的,只要将GridView换成ListView就ok了

    9.获取相同id的某个控件

    这个在选择照片的情况中经常碰到,GridView控件中有很多RelativeLayout,RelativeLayout中存在ImageView

    1)能够直接获取IamgeView的id

     ImageView im=(ImageView)solo.getView("album_item_photo",1);

    solo.clickOnView(im);

    album_item_photo为控件id,1是所选控件的那个下标

    2)能获得GridView的id,没有ImageView的id

    GridView gridview=(GridView)solo.getView("album_detail_grid");

    RelativeLayout RL = (RelativeLayout) gridview.getChildAt(2);

    ImageView im=(ImageView)RL.getChildAt(0);

    solo.clickOnView(im);

    或者

    GridView gridview=(GridView)solo.getView("album_detail_grid");

    RelativeLayout RL = (RelativeLayout) gridview.getChildAt(2);

    int id = a.getResources().getIdentifier("album_item_photo", "id", a.getPackageName());

    ImageView im = (ImageView) RL.findViewById(id);

    ImageView im=solo.getCurrentViews(ImageView.class, RL).get(0);

  • 相关阅读:
    jquery取iframe中元素
    jquery 复选框全选/全不选切换 普通DOM元素点击选中/取消选中切换
    css横向 弹性盒子布局的一些属性
    css3 html5画心
    herf 和 src 的区别
    AngularJS bind
    I18n国际化
    jqgrid获取数据条数
    @ModelAttribute设置request、response、session对象
    js浏览器判断函数
  • 原文地址:https://www.cnblogs.com/wyfly/p/4599187.html
Copyright © 2020-2023  润新知