Android UiAutomator 报告查看

概要 
—报告简介及查看 
—各种状态报告及其定位问题 
—输出信息到报告 
—传入参数控制脚本

报告简介和查看

错误类型
报告示例说明

报告信息说明 
—INSTRUMENTATION_STATUS_CODE: -2 //-2断言失败返回的

—Time: 1.539 //总共运行时间 
—Failures: 1, //断言失败1条 
—Errors: 0 //脚本失败0条 
—执行当前类下的所有用例:testName 不赋值,放空! 
—Test results for WatcherResultPrinter=.F….E //检出是断言错和脚本错误

输出信息到报告

1.初始setUp和tearDown 
setUp(计划) //用例运行前执行 
tearDown(拆卸) //用例运行后执行

2.输出信息使用API说明 
1)Boundle 
2)getAutomationSupport().sendStatus(int ,Bundle); //发送状态函数 
ps:Boundle类的数据类型:很多个 Key = value

运行顺序: setUp—>testCase—>tearDown 
演示代码:

    @Override
    protected void setUp() throws Exception {
        // TODO Auto-generated method stub
        super.setUp();
        System.out.println("setUp:用例开始执行了***************");
        //创建bundle类 存储新
        Bundle bundle = new Bundle();
        /*putString 保存键值对的方式
         * */
        bundle.putString("*key1*", "*value1*");
        bundle.putString("*key2*", "*value2*");
        bundle.putString("*key3*", "*value3*");
        bundle.putString("*key4*", "*value4*");
        bundle.putString("*key5*", "*value5*");
        /* 调用发送状态消息函数
         * * 注:int 是状态吗,系统的状态码有 -1,0,1,2,-2
         * int的值不能是上述这些
         * */
        getAutomationSupport().sendStatus(10, bundle);
    }

public void testCase(){
        System.out.println("testCase:用例开始执行了***************");
        //创建bundle类 存储新
        Bundle bundle = new Bundle();
        /*putString 保存键值对的方式
         * 注:int 是状态吗,系统的状态码有 -1,0,1,2,-2
         * int的值不能是上述这些
         * */
        bundle.putString("+key1+", "+value1+");
        bundle.putString("+key2+", "+value2+");
        bundle.putString("+key3+", "+value3+");
        bundle.putString("+key4+", "+value4+");
        bundle.putString("+key5+", "+value5+");
        //调用发送状态消息函数
        getAutomationSupport().sendStatus(11, bundle);
    }

public void testCase(){
        System.out.println("testCase:用例开始执行了***************");
        //创建bundle类 存储新
        Bundle bundle = new Bundle();
        /*putString 保存键值对的方式
         * 注:int 是状态吗,系统的状态码有 -1,0,1,2,-2
         * int的值不能是上述这些
         * */
        bundle.putString("+key1+", "+value1+");
        bundle.putString("+key2+", "+value2+");
        bundle.putString("+key3+", "+value3+");
        bundle.putString("+key4+", "+value4+");
        bundle.putString("+key5+", "+value5+");
        //调用发送状态消息函数
        getAutomationSupport().sendStatus(11, bundle);
    }

传入参数控制脚本 
演示代码

/*
     * 1)通过-e 传入数据到用例中,如:拨打一个指定电话

     * */

    public void testCall() throws UiObjectNotFoundException{
        //初始化用例环境
        UiDevice.getInstance().pressBack();
        UiDevice.getInstance().pressBack();
        UiDevice.getInstance().pressBack();
        UiDevice.getInstance().pressHome();
        //获取到电话对象
        UiObject call = new UiObject(new UiSelector().
                text("电话"));
        //获取到拨号盘对象
        UiObject callTray = new UiObject(new UiSelector().
                resourceId("com.android.dialer:id/floating_action_button"));
        //点击进入电话模式
        call.clickAndWaitForNewWindow();
        //点击进入打开拨号盘
        callTray.clickAndWaitForNewWindow();

        //从命令行取参数
        Bundle params = getParams();
        String phone = (String)params.get("phone"); // -e key value -e phone 10086
    //  拨号 
        for(int i=0;i<phone.length();i++){
            //拆分字符串方法,一个一个字符输入
            String c = phone.charAt(i)+"";
            //拨号 
            UiObject phoneNum = new UiObject(new UiSelector().
                    text(c));
            phoneNum.click();
            sleep(1200);

        }

    }

测试代码(dos下)

C:\Users\Administrator>adb shell uiautomator runtest Demo1.jar --nohup -c com.re
port.Demo#testClear -e ctrl 10086
/*
     * * 2)通过-e 传入整体控制参数控制脚本,如:清除应用数据
     * */
    public void testClear() throws UiObjectNotFoundException{
        //初始化用例环境
        UiDevice.getInstance().pressBack();
        UiDevice.getInstance().pressBack();
        UiDevice.getInstance().pressBack();
        UiDevice.getInstance().pressHome();

        //获得控制台输入内容
        Bundle b = getParams();
        //
        String ctrl =(String)b.get("ctrl");
        //Boolean 转换成boolean值
        boolean isClear = Boolean.valueOf(ctrl);
        if(isClear){
            //执行清理
            //获取应用对象
            UiObject apply = new UiObject(new UiSelector().
                    description("应用"));
            //获取设置对象设置
            UiObject set = new UiObject(new UiSelector().
                    text("设置"));
            //获取应用对象
            UiScrollable d_apply = new UiScrollable(new UiSelector()
            .resourceId("com.android.settings:id/dashboard_container"));//父类
            UiSelector d_apply1 = new UiSelector().
                    className("android.widget.TextView");//子类
            String text ="应用";
            UiObject c_text = d_apply.getChildByText(d_apply1, text,true);//要查找的元素
            //获取百度浏览器对象
            UiObject baidu = new UiObject(new UiSelector().
                    text("百度浏览器"));
            //获取存储对象
            UiObject memonry = new UiObject(new UiSelector().
                    text("存储"));
            //获取清除缓存对象
            UiObject clear = new UiObject(new UiSelector().
                    text("清除缓存"));
            //依次点击操作 注意延时
            apply.clickAndWaitForNewWindow();
            set.clickAndWaitForNewWindow();
            c_text.clickAndWaitForNewWindow();
            baidu.clickAndWaitForNewWindow();
            memonry.clickAndWaitForNewWindow();
            clear.clickAndWaitForNewWindow();
        }else{
            //不执行清理
            System.out.println("不执行清理++++++++++");
        }
    }   

测试代码(dos下)

C:\Users\Administrator>adb shell uiautomator runtest Demo1.jar --nohup -c com.re
port.Demo#testClear -e ctrl true

猜你喜欢

转载自blog.csdn.net/u013247461/article/details/81087794