码迷,mamicode.com
首页 > 移动开发 > 详细

Appuim项目实战---录制视频

时间:2017-09-13 18:27:55      阅读:306      评论:0      收藏:0      [点我收藏+]

标签:black   eth   tar   更改   extends   testng   lis   ima   null   

背景:在app测试中,很多场景当时出现,后期无法出现,如果这个时候就通过录制视频的方式记录那么问题就很快解决了,录制视频的简单命令:adb shell screenrecord --time-limit 10 /sdcard/demo.mp4 默认录制10分钟就结束,注意我录制视频是会使用ip,默认录制视频使用的屏幕都很大,我们可以换个小的屏幕,具体录制视频adb参数可以看这篇博客http://blog.csdn.net/wirelessqa/article/details/22725581

在我们项目中,我们实际只需要在方法开始前执行录制视频,在监听成功或者失败后,在结束掉录制视频,而关键在于,结束是把录制视频的进程给杀掉,在启动时就记录了这个进程,然后就是把文件pull到本地,实现方法

package until;

import java.io.IOException;

public class publicmethod {

    /**

     *

    * @测试点: 开始录制视频

     @param @param ip

     @param @param name

     @param @return

    * @备注 Process

    * @author zhangjun

    * @date 2017913

     @修改说明

     */

    public Process startRecordVideo(String ip,String name){

        System.out.println("开始录制视频");

        String runadb="adb -s "+ip+" shell screenrecord /sdcard/"+name+".mp4";

        System.out.println("执行的命令:"+runadb);

        Process    runprocess = null;

        try {

            runprocess = Runtime.getRuntime().exec(runadb);

        } catch (IOException e) {

            e.printStackTrace();

        }

        return runprocess;

    }

    /**

     *

    * @测试点: 结束视频录制,通过杀掉录制视频的进程,然后把视频数据复制到另外一个文件中

     @param process 传入的进程

     @param path 视频录制的位置

     @param ip 传入的ip

    * @备注 void

    * @author zhangjun

    * @date 2017913

     @修改说明

     */

    //

    public void stopRecordVideo(Process process, String path, String ip) {

        process.destroy(); // 结算掉进程

        // 移动视频地址

        String moveVideo = "adb -s " + ip + " pull " + path + "" + " D:\\test";

        System.out.println("执行的命令:" + moveVideo);

        try {

            Runtime.getRuntime().exec(moveVideo);// 移动数据内容

            System.out.println("移动视频成功,请在dtest下查看");

        } catch (IOException e) {

            e.printStackTrace();

        }

    }

}

调用过程,更改监听器内容,

package until;

 

import org.testng.ITestContext;

import org.testng.ITestResult;

import org.testng.TestListenerAdapter;

public class TestngListener extends TestListenerAdapter {

     boolean Recordvideo=false;

     publicmethod pubmethod=new publicmethod();

     Process getprocess;

     String ip="10.37.2.151:5555";

    

    @Override

    public void onTestStart(ITestResult result) {

        super.onTestStart(result);

        logTest.logInfo("启动我是onTestStart,我是testng的测试方法");

        String name=result.getName();

        logTest.logInfo("获取的方法名"+name);

        getprocess=pubmethod.startRecordVideo(ip,name);

    }

    @Override

    public void onStart(ITestContext testContext) {

        super.onStart(testContext);

        logTest.logInfo("启动我是onstart,所有初始化都在我这里做");

    }

    @Override

    public void onTestFailure(ITestResult tr) {

        super.onTestFailure(tr);

        logTest.logInfo("我是onTestFailure,代表我们的其他操作失败了");

        //结束视频

        pubmethod.stopRecordVideo(getprocess, "sdcard/"+tr.getName()+".mp4",ip);

    }

    @Override

    public void onTestSuccess(ITestResult tr) {

        super.onTestSuccess(tr);

            //结束视频

        pubmethod.stopRecordVideo(getprocess, "sdcard/"+tr.getName()+".mp4",ip);

    }

    @Override

    public void onTestSkipped(ITestResult tr) {

        super.onTestSkipped(tr);  

    }

 

}

技术分享

技术分享

Appuim项目实战---录制视频

标签:black   eth   tar   更改   extends   testng   lis   ima   null   

原文地址:http://www.cnblogs.com/chongyou/p/7516343.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!