背景描述
camera的整机老化测试中,有时候客户会要求测试每次开机后首次打开相机是否正常。手动打开相机会严重影响测试效率,所以编写次脚本用于测试。
1. 主要实现功能
1.1 重启手机,等待adb启动成功;
1.2 连接adb;
1.3 等待服务起来,因为adb启动时,app等各种服务还未完全启动,此时无法打开相机;
1.4 滑动解锁屏幕;
1.5 调用log抓取脚本;
1.6 打开相机;
1.7 切换相机到慢动作模式(会重新初始化ois)
1.8 切换相机到拍照模式(再次重新初始化ois)
1.9 关闭相机
1.10 判断是否到达测试次数
2. 脚本实现
中文注释部分是为了方便理解添加的,运行脚本时请删除中文注释,防止运行异常
为方便使用,附件中已经上传脚本文件,该脚本在实际项目中实测可用
2.1 adb_reboot_open_camera.bat
@echo off //执行命令在命令行不显示,删除该行,所有命令会在命令窗口显示
set /a var=1 //设置变量,方便后续计数进行测试测试判断
:start //循环运行的起始点
echo "---restart the phone---"
adb reboot
echo "---waiting for the adb connection---"
adb wait-for-device //脚本停留在此,等待adb启动
echo "---waiting for servce to start---"
adb shell sleep 12 //延时时间根据手机大概估测
echo "---get permissions---"
adb root
adb remount
echo "--- slide to unlock screen ---"
adb shell input swipe 550 2150 550 1200 //从坐标点(550,2150)滑动到(550,1200),具体坐标值请在开发者模式下查看,上一篇文档《camera自动化测试脚本_01》有相关介绍
adb shell sleep 1
echo "--- call logcat.bat ---"
start "" cmd /k call logcat_open_camera.bat //调用抓取log的脚本,两个脚本放在同一目录中
adb shell sleep 1
echo "--- turn on the camera ---"
adb shell am start com.motorola.camera3 //打开相机,服务号com.motorola.camera3需要查看修改,具体方法在《camera自动化测试脚本_01》有相关介绍
adb shell sleep 3
echo "--- switch mode ---"
adb shell input tap 138 1890 //点击坐标(138, 1890),摩托样机对应的是切换慢动作,此时会重新初始化ois
adb shell sleep 1
echo "--- switch photo modes ---"
adb shell input tap 950 1880 //点击坐标(950, 1880),摩托样机对应的是切换拍照模式,此时会重新初始化ois
adb shell sleep 1
echo "--- turn off the camera ---"
adb shell am force-stop com.motorola.camera3 //关闭相机,服务号必须跟开启相机时保持一致
//如果循环次数不等于2000,满足条件,跳转到脚本开头的start处
if %var% NEQ 2000 (
set /a var=%var%+1
goto start
)
echo "########### test end ###########"
pause
2.2 logcat_open_camera.bat
@echo off
echo "enter logcat bat"
//获取当前时间
set Y=%DATE:~0,4%
set M=%DATE:~5,2%
set D=%DATE:~8,2%
set H=%TIME:~0,2%
set MI=%TIME:~3,2%
set S=%TIME:~6,2%
set time=%Y%_%M%_%D%_%H%_%MI%_%S%
//打印空行,并保存在文件中
echo=>>mot_aw86006_reboot_open_camera.txt
echo=>>mot_aw86006_reboot_open_camera.txt
echo=>>mot_aw86006_reboot_open_camera.txt
echo=>>mot_aw86006_reboot_open_camera.txt
echo=>>mot_aw86006_reboot_open_camera.txt
echo=>>mot_aw86006_reboot_open_camera.txt
echo=>>mot_aw86006_reboot_open_camera.txt
echo=>>mot_aw86006_reboot_open_camera.txt
echo=>>mot_aw86006_reboot_open_camera.txt
echo "######################### Current time: %time% ############################################">>mot_aw86006_reboot_open_camera.txt
adb shell "logcat | grep CAM-OIS">>mot_aw86006_reboot_open_camera.txt
exit //adb断开后会自动关闭调试窗口,必须要添加,否则每次调用该脚本都会打开一个窗口