1. 程式人生 > >Appuim項目實戰---錄制視頻

Appuim項目實戰---錄制視頻

實現 extends void con 博客 override 命令 mov test

背景:在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項目實戰---錄制視頻