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

Posted 做梦的人

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Appuim项目实战---录制视频相关的知识,希望对你有一定的参考价值。

背景:在app测试中,很多场景当时出现,后期无法出现,如果这个时候就通过录制视频的方式记录那么问题就很快解决了,录制视频的简单命令:adb shell screenrecord  --time-limit 10 /sdcard/demo.mp4  默认录制10分钟就结束,注意我录制视频是会使用ip,因为在框架中断掉手机也需要使用到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 2017年9月13日 
	  @修改说明
	 */
	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 2017年9月13日 
	  @修改说明
	 */
	//
	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("移动视频成功,请在d盘test下查看");
		} 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项目实战---录制视频的主要内容,如果未能解决你的问题,请参考以下文章

Appuim项目实战---监听testng

Appuim项目实战—log4j配置

Android Studio App开发之使用摄像机录制视频和从视频库中选取视频的讲解及实战(附源码)

Android音视频开发之openGL视频录制

GUI视频教程GUI综合实战视频教程第1期:综合UI项目规划以及AppWizard和ThreadX GUIX初识(2022-09-24)

GUI视频教程GUI综合实战视频教程第1期:综合UI项目规划以及AppWizard和ThreadX GUIX初识(2022-09-24)