Android UI 自动化测试之UiObject

来源:互联网 发布:免费时时彩网站源码 编辑:程序博客网 时间:2024/06/05 15:55
  1. UiObject 类介绍
    代表一个组件对象,对象有许多模拟实际操作手机的方法与属性
  2. 点击与长按对象
    (1)组件区域位置关系
    这里写图片描述
    (2)点击长按相关 api

这里写图片描述

    public void testClick() throws UiObjectNotFoundException{        UiObject clock=new UiObject(new UiSelector()        .resourceId("com.android.deskclock:id/analog_appwidget"));              //clock.click();        //clock.clickAndWaitForNewWindow();//      clock.clickBottomRight();//      sleep(3000);//      UiDevice.getInstance().pressBack();//      sleep(1000);//      clock.clickTopLeft();//      sleep(3000);//      UiDevice.getInstance().pressBack();//      sleep(1000);        //longclick        //clock.longClick();        UiDevice.getInstance().swipe(533, 612, 535, 615, 500);      }
  1. 拖拽与滑动文本
    (1)拖动组件示意图
    这里写图片描述
    (2)拖拽文本相关 api
    这里写图片描述
    public void testDrag() throws UiObjectNotFoundException{//      UiObject object1=new UiObject(new UiSelector().text("联系人"));//      UiObject object2=new UiObject(new UiSelector().text("图库"));//      //object1.dragTo(350,1704-500, 10);//      //object1.dragTo(object2, 30);//      object1.swipeUp(5);        UiObject recent=new UiObject(new UiSelector()        .resourceId("com.android.systemui:id/app_thumbnail_image"));                recent.swipeLeft(10);    }
  1. 输入文本与清除文本
    (1)输入文本相关 API
    这里写图片描述
public void testSetText() throws UiObjectNotFoundException{//      UiObject edit=new UiObject(new UiSelector()//      .resourceId("com.android.mms:id/embedded_text_editor"));//      //      edit.setText("qwertyuiop");//      sleep(2000);//      edit.clearTextField();        //接收者        UiObject r=new UiObject(new UiSelector()        .resourceId("com.android.mms:id/recipients_editor"));        UiObject w=new UiObject(new UiSelector().text("接收者"));        r.setText("kkkkkkkkkkkkk");        //将光标移动到行尾,使用backspace进行删除        UiDevice.getInstance().pressKeyCode(KeyEvent.KEYCODE_MOVE_END);        while(!w.exists()){        UiDevice.getInstance().pressKeyCode(KeyEvent.KEYCODE_DEL);        }        //将光标移动到行首,使用delete键来删除    }

(2)输入文本与清除文本实现步骤说明
输入文本:清除文本—输入文本
清除文本:长按一键删除
5. 获取对象的属性与属性的判断
(1)获取对象的属性
这里写图片描述

public void testGet() throws UiObjectNotFoundException{        UiObject r=new UiObject(new UiSelector()        .resourceId("com.android.mms:id/recipients_editor"));        String rec=r.getText();        System.out.println("HINT:"+rec);        System.out.println("CLASS:"+r.getClassName());        System.out.println("PACKAGE_Name:"+r.getPackageName());        System.out.println("PACKAGE_Name:"+r.getPackageName());        System.out.println("DESC:"+r.getContentDescription());        System.out.println("RECT:"+r.getBounds().left);        assertEquals("接收者", rec);    }

(2)获取父类与子类节点
这里写图片描述

public void testNode() throws UiObjectNotFoundException{        UiObject down=new UiObject(new UiSelector()        .resourceId("com.cyanogenmod.filemanager:id/navigation_view_details_item")        .index(3));//      UiObject download=down.getChild(new UiSelector()//      .resourceId("com.cyanogenmod.filemanager:id/navigation_view_item_name"));//      //      download.click();        UiObject music=down.getFromParent(new UiSelector()        .resourceId("com.cyanogenmod.filemanager:id/navigation_view_details_item").index(5));        music.click();    }

(3)属性的判断
这里写图片描述

public void testIs() throws UiObjectNotFoundException{       UiObject wlan=new UiObject(new UiSelector()       .resourceId("com.android.settings:id/switchWidget"));       if(!wlan.isChecked()){         wlan.click();         }    }
  1. 手势的操作
    (1) 手势相关操作
    这里写图片描述
    (2)手势相关操作 API
    这里写图片描述
public void testGesture() throws UiObjectNotFoundException{    UiObject object=new UiObject(new UiSelector()    .resourceId("com.android.gallery3d:id/photopage_bottom_controls"));    //object.pinchIn(80, 20);    //object.pinchOut(80, 20);    Point startPoint1, startPoint2, endPoint1, endPoint2;    startPoint1=new Point();    startPoint2=new Point();    endPoint1=new Point();    endPoint2=new Point();    startPoint1.x=157;startPoint1.y=183;    startPoint2.x=122;startPoint2.y=455;    endPoint1.x=948;endPoint1.y=195;    endPoint2.x=930;endPoint2.y=493;    object.performTwoPointerGesture(startPoint1, startPoint2, endPoint1, endPoint2, 50);}
  1. 判断对象是否存在
    相关 API
    这里写图片描述
public void testExist() throws UiObjectNotFoundException{      UiObject l=new UiObject(new UiSelector().text("联系人"));      if(l.exists()){          l.click();      }      UiObject create=new UiObject(new UiSelector().text("创建新联系人"));      if(create.waitForExists(5000)){          System.out.println("没有任何联系人,需要创建");          create.click();          //创建步骤。。。。      }  }
原创粉丝点击