关闭

安卓手机测试中几个批处理小脚本

445人阅读 评论(0) 收藏 举报
分类:
摘要: 在做android测试的时候,有时候写几个简单的批处理,能够对工作有事半功倍之效。 下面列举部分工作过程中遇到的命令,供有需要的朋友们参考。 增加一个新的常用脚本: @echo off echo ********************************** echo ***** 测试...

在做android测试的时候,有时候写几个简单的批处理,能够对工作有事半功倍之效。

下面列举部分工作过程中遇到的命令,供有需要的朋友们参考。

增加一个新的常用脚本:

复制代码
@echo off
echo **********************************
echo ***** 测试小工具---Not*****
echo **********************************
pause

adb wait-for-device
adb devices
:start
echo "根据需要输入对应ID(1:安装;2:卸载;3:截图;4:导出日志;0:退出)"

set /p str=请选择输入数字:
if %str% == 1 goto install_app else (
if %str% == 2 goto uninstall_app else (
if %str% == 3 goto screenshot else (
if %str% == 4 goto export_log else (
if %str% == 0 goto exit )))) else (
(echo "你的输入有误!" && (goto start))
rem pause

set DIR=C:\Users\Haochuang\Desktop
cd /d %DIR%

:install_app
adb install -r %DIR%\hao*.apk
echo "1.货主端App已安装!"
adb install -r %DIR%\truck*.apk
echo "1.司机端App已安装!"

:uninstall_app
adb uninstall com.haochuang.test1;
echo "1.XXX pp卸载完成!"
adb uninstall com.haochuang.app2;
echo "1.XXX App卸载完成!"

:screenshot
adb shell /system/bin/screencap -p /sdcard/screenshot.png
echo "1.截图完成!"

adb pull /sdcard/screenshot.png %DIR%
echo "将截图复制到电脑盘中"

:export_log
adb logcat -v time > %DIR%\test.log

:exit
pause & exit

rem ping 123.45.67.89 -n 1 -w 10000 > nul 
rem echo "没有找到devices,请检查设备是否连接成功"
rem pause & exit

rem 截图
rem adb shell /system/bin/screencap -p /sdcard/screenshot.png
rem 将截图复制到电脑盘中
rem adb pull /sdcard/screenshot.png E:\download 
复制代码

 

1.安装:

复制代码
@echo off
echo 等待设备连接
adb wait-for-device
echo **********************************
set input=%1
echo 已连接
if "%input%" neq "" (
echo 安装 %input%
adb install -r %input%
echo %1% 安装完毕
) else (
for /r %%i in (*.apk) do (
echo 安装 %%i
adb install -r %%i
echo  %%i 安装完毕
)
)
pause
复制代码

2.卸载:

复制代码
@echo off
echo **********************************
echo current path: %cd%

set HAO01=co.truckno1.cargo
set HAO02=com.yihaohuoche.truck

adb wait-for-device
adb uninstall %HAO01%
echo "uninstall Success!"
adb uninstall %HAO02%
echo "uninstall Success!"

pause
复制代码

3.抓日志

复制代码
@echo off
echo **********************************
echo *****  Test Log---Notordinary*****
echo **********************************

echo current path: %cd%
%cd%\bin\adb.exe wait-for-device
%cd%\bin\adb.exe logcat -v time > %cd%\files\test.log
echo log export succ,path:
echo %cd%\files
pause & exit
复制代码

 

4.截图

复制代码
@echo off
echo **********************************
echo *****  ScreenShot---NotOrdinary***
echo **********************************

echo current path: %cd%
%cd%\bin\adb.exe wait-for-device
%cd%\bin\adb.exe shell /system/bin/screencap -p /sdcard/cargo_screenshot.png
%cd%\bin\adb.exe pull /sdcard/cargo_screenshot.png %cd%\files
echo "picture export succ,path:"
echo %cd%\files
复制代码

 

 

 

用adb获得手机里面某个apk的应用信息、版本信息

 

adb shell dumpsys package com.examle.xx
adb shell dumpsys 列出所有

用adb启动apk

adb shell am start -n NotOrdinary.test/haochuang.test.TestActivity

 

 

点火熄火等:

复制代码
@echo off
adb wait-for-device
adb devices
:start
echo "根据需要输入对应ID(1:点火;2:熄火;3:唤醒;4:初始化;0:退出)"

set /p str=请选择输入数字:
if %str% == 1 goto acc_on else (
if %str% == 2 goto acc_off else (
if %str% == 3 goto wake_up else (
if %str% == 4 goto init else (
if %str% == 0 goto exit )))) else (
(echo "你的输入有误!" && (goto start))
rem pause

:acc_on
adb shell am broadcast -a tsd.event.system.acc_on
rem pause
rem & exit
goto start

:acc_off
adb shell am broadcast -a tsd.event.system.acc_off
rem pause
rem & exit
goto start

:wake_up
adb shell am broadcast -a tsd.command.WAKE_UP
rem pause
rem & exit
goto start

:init
adb shell am broadcast -a tsd.init.COMPLETE
rem pause
rem & exit
goto start

:exit
pause & exit
exit 0
复制代码

 

安装所有应用:

复制代码
@echo off
echo 等待设备连接
adb wait-for-device
set input=%1
echo 已连接
if "%input%" neq "" (
echo 安装 %input%
adb install -r %input%
echo %1% 安装完毕
) else (
for /r %%i in (*.apk) do (
echo 安装 %%i
adb install -r %%i
echo  %%i 安装完毕
)
)

pause
复制代码

 

启动系统设置:

@echo off
adb wait-for-device
adb shell am start com.android.settings/.Settings

 

启动桌面应用:

@echo off
adb wait-for-device
adb shell am start -a android.intent.action.MAIN  -c android.intent.category.HOME

 

启动服务:

@echo off
:loop
adb wait-for-device
adb shell am startservice -a com.tuyou.tsd.cardvr.service.VideoRec
::ping 127.0.0.1 -n 10 > nul
::goto loop

 

开始录制视频:

@echo off
adb wait-for-device
adb shell am broadcast -a tsd.event.cardvr.start_record

停止录制视频:

@echo off
adb wait-for-device
adb shell am broadcast -a tsd.event.cardvr.stop_record

 

auto test monkey:

复制代码
@set %repeat=0
:BEGIN
@set /a repeat=repeat+1
@adb shell monkey --ignore-crashes --monitor-native-crashes -v 320000 > monkey_%repeat%.txt
@ping -n 8 127.0>nul
@adb reboot
@ping -n 40 127.0>nul
@goto BEGIN
复制代码

 

 

安装应用:

复制代码
@echo off
echo ***********************************************
echo ***** 设备端App安装工具---Notordinary *****
echo ***********************************************
pause

adb devices
set DIR=E:\AutoBuild\Version_20150817
cd /d %DIR%
G:

adb install -r %DIR%\TSD-Launcher*.apk
echo "1.Launcher 已安装!"

adb install -r  %DIR%\TSD-SystemSetting*.apk
echo "2.设置 已安装!"

adb install  -r %DIR%\TSD-VoiceAssistant*.apk
echo "3.语音助手 已安装!"

adb install  -r %DIR%\TSD-Update*.apk
echo "4.更新 已安装!"

adb install  -r %DIR%\TSD-CarDVR*.apk
echo "5.行车记录 已安装!"

adb install %DIR%\TSD-Nav*.apk
echo "6.导航 已安装!"

adb install  -r %DIR%\TSD-MUSIC*.apk
echo "7.音频 已安装!"

adb install  -r %DIR%\TSD-Podcast*.apk
echo "8.播客 已安装!"

adb install -r  %DIR%\TSD-News*.apk
echo "9.新闻 已安装!"

rem ping 123.45.67.89 -n 1 -w 10000 > nul 
rem echo "没有找到devices,请检查设备是否连接成功"
pause & exit
复制代码

 

卸载应用:

复制代码
@echo off
echo ***********************************************
echo ***** XXX设备端App卸载工具---Notordinary *****
echo ***********************************************
pause

adb uninstall com.test.hao;
echo "1.Launcher 已卸载!"

adb uninstall com.test.hao.settings;
echo "2.设置 已卸载!"

adb uninstall com.test.hao.voice;
echo "3.语音助手 已卸载!"

adb uninstall com.test.hao.updatesoft;
echo "4.更新 已卸载!"

adb uninstall com.test.hao.cardvr;
echo "5.行车记录 已卸载!"

adb uninstall com.test.hao.navigation;
echo "6.导航 已卸载!"

adb uninstall com.test.hao.audio;
echo "7.音频 已卸载!"

adb uninstall com.test.hao.podcast;
echo "7.播客 已卸载!"

adb uninstall com.test.hao.news;
echo "7.新闻 已卸载!"

rem ping 123.45.67.89 -n 1 -w 10000 > nul
rem echo "没有找到devices,请检查设备是否连接成功"
pause & exit
复制代码

 

在使用过程中,遇到可能需要点火熄火等操作,需要重复去敲adb shell命令,不如写成批处理,如下;

复制代码
@echo off
adb wait-for-device
adb devices
:start
echo # "根据需要输入对应ID(1:点火;2:熄火;3:唤醒;4:初始化;)"

set /p str=请选择输入数字:
if %str% == "1" goto acc_on
if %str% == "2" goto acc_off
if %str% == "3" goto wake_up
if %str% == "4" goto init

:acc_on
echo "开始点火"
adb shell am broadcast -a tsd.event.system.acc_on
echo "点火完成"
pause & exit

:acc_off
adb shell am broadcast -a tsd.command.WAKE_UP
pause & exit

:wake_up
adb shell am broadcast -a tsd.command.WAKE_UP
pause & exit

:init
adb shell am broadcast -a tsd.init.COMPLETE
pause & exit

exit 0
复制代码

 

截图:

复制代码
@echo off
rem ok----------------
adb shell /system/bin/screencap -p /sdcard/screenshot.png
adb pull /sdcard/screenshot.png C:\Users\HaoChuang\Desktop\
rem ok----------------

rem ================================
rem adb shell /system/bin/screencap -p /sdcard/screenshot.png
rem -------------1--------------
rem 方法一:设置变量
rem adb shell aa = date '+%m%d%H%M%S'
rem adb shell mv /sdcard/screenshot.png /sdcard/screenshot_$aa.png
rem -------------1--------------

rem -------------2--------------
rem 方法一:直接修改
rem adb shell /system/bin/screencap -p /sdcard/screenshot.png
rem adb shell mv /sdcard/screenshot.png /sdcard/screenshot_`date '+%m%d%H%M%S'`.png
rem remn adb pull /sdcard/screenshot_`date '+%m%d%H%M'`*.png C:\Users\HaoChuang\Desktop\
rem -------------2--------------
rem ================================
复制代码

 

如上,测试可用。

 

附录:

路径相关:参考:http://blog.csdn.net/mangmang2012/article/details/7048945

复制代码
1. .bat文件中获取bat文件所在目录的参数为 %~dp0

%~dp0 “d”为Drive的缩写,即为驱动器,磁盘、“p”为Path缩写,即为路径,目录

cd是转到这个目录,不过我觉得cd /d %~dp0还好些

选项语法:

~0 -删除任何引号("),扩充%0

%~f0 -将%0扩充到一个完全合格的路径名(“f”是file,即文件)

%~d0 -仅将%0扩充到一个驱动器号

%~p0 -仅将%0扩充到一个路径

%~n0 -仅将%0扩充到一个文件名(“n”是name文件名)

%~x0 -仅将%0扩充到一个文件扩展名

%~s0 -扩充的路径只含有短名(“s”为Short,短的)

%~a0 -将%0扩充到文件的文件属性(“a”为attribute,即属性)

%~t0 -将%0扩充到文件的日期/时间(“t”time)

%~z0 -将%0扩充到文件的大小(Size大小)

%~$PATH:0 -查找列在路径环境变量的目录,并将%0扩充

到找到的第一个完全合格的名称。如果环境变量名

未被定义,或者没有找到文件,此组合键会扩充到

空字符串

可以组合修饰符来得到多重结果:

%~dp0 -仅将%0扩充到一个驱动器号和路径

%~nx0 -仅将%0扩充到一个文件名和扩展名

%~fs0 -仅将%0扩充到一个带有短名的完整路径名

%~dp$PATH:0 -查找列在路径环境变量的目录,并将%I扩充

到找到的第一个驱动器号和路径。

%~ftza0 -将%0扩充到类似输出线路的DIR

%0为当前批处理文件

如果0换成1为第一个文件,2为第2个

****************************************************

%0代指批处理文件自身

%~d0是指批处理所在的盘符

%~dp0是盘符加路径

cd %~dp0就是进入批处理所在目录


2.添加永久环境变量

用reg add 向HKLM\system\controlset001\control\session manager\environment添加变量即可

如:添加添加值为hedalixin变量NAME

reg add "HKLM\system\controlset\control\session manager\environment" /v NAME /t REG_SZ /d hedalixin
复制代码

 

 ×××××××××××××××××××××××

 杀进程类:

#!/bin/bash
PROID=`ps -fe|grep 包名|awk '{print $2}' | head -n 1`
kill -9 $PROID

两步操作:

adb shell ps -fe|grep uiautomator
获取到PID之后
adb shell kill $PID$

 

×××××××××××××××××××××××××

在控制台输入命令$adb shell pm

可以看到adb shell pm的相关用法,详细信息请自己看输出

要看一个apk文件的相关信息最简单实用的方法是:

aapt dump badging [yourapp.apk]

如果只是想查看手机上应用的packageName,则输入命令:

adb shell pm list packages

如果想知道应用对应的apk文件在手机上的安装位置则可以在上面的命令后加-f参数

adb shell pm list packages -f

×××××××××××××××××××××××××

其他常见adb命令:http://www.cnblogs.com/SharkBin/p/3993231.html

 

更多,待继续补充。

转载自:http://www.cnblogs.com/haochuang/ 
0
0
查看评论

Android进阶之强大的批处理功能

博客出自:http://blog.csdn.net/liuxian13183,转载注明出处! All Rights Reserved !  批量处理可以节省时间,不必每次打开数据进行dao操作,功能强大,效率高效 1、Android中的批量处理 sqlDb.begin...
  • liuxian13183
  • liuxian13183
  • 2012-07-26 16:05
  • 4505

批处理脚本实现android应用程序自动化测试

测试平台:兼容android所有平台(2.3-4.2)   测试背景:由于需要对产品的SDK做接口测试,而这些接口需要在app里面调用,故开发了一个简单的android应用(如图),用来调用需要测试的接口,app中的每个按钮其实都是一个测试模块。   测试需求:   1、由...
  • fangxiao37
  • fangxiao37
  • 2013-09-12 14:05
  • 2291

Android测试提升效率批处理脚本

目录 1、[查看APK文件信息.bat] 2、[自动安装APK.bat] 3、[查看APK文件信息.bat] 4、[自动安装APK.bat] 5、[导出Logcat日志.bat]     1、[查看APK文件信息.bat] ...
  • flb911
  • flb911
  • 2016-03-13 11:32
  • 170

BAT - 通过脚本直接从apk文件获取包名等信息

BAT - 通过脚本直接从apk文件获取包名等信息 有时,我需要从android应用包里直接获取到应用程序的包名,别的不需要,此时想方便快捷的拿到想到的信息,只需要打开命令行窗口,然后输入命令 aapt d badging xxx.apk xxx.apk是你想解析的包,就可以得到apk的资源信息...
  • lys211
  • lys211
  • 2015-05-13 21:13
  • 1171

bat脚本如何自动执行 adb shell 以后的命令

普通情况,可以直接用 ”adb shell  rm /data/tmp/xx.sh“ 之类的命令执行一条指令。 需要root权限情况,如果执行adb shell su的话,会进入控制台但是无法输入,用批处理的话也会卡在此处。 可以用输入重定向的方法来解决。 1.将所有需要执行的命令放到一个...
  • u014744118
  • u014744118
  • 2015-10-09 13:10
  • 765

写一个循环启动app的bat脚本辅助monkey测试

本人在使用monkey测试app的时候,感觉那个启动acitivity的参数的设置好像不咋好用,具体原因不是太清楚,可能是我设置的间隔时间的问题。大概设置的比例30%-40%的样子,但是很少能看到重启app的,在学了一些bat的知识后,想得了用bat也能做,之前想的是用java来做。下面分享一下ba...
  • Fhaohaizi
  • Fhaohaizi
  • 2017-08-02 11:44
  • 475

shell脚本实现自动创建模拟器、启动模拟器、自动安装apk并进行monkey测试

直接上代码了#! /bin/bash cd ~/Desktop/release_apk mkdir -p log echo "查找正在运行的设备" firstDeviceName=`adb devices|sed -n '2p'|awk '{print $...
  • xiazai_user
  • xiazai_user
  • 2017-03-13 14:26
  • 543

用BAT写一个简单的APK安装器

怕麻烦?不想装其它手机软件带来很多广告信息?那么自己写一个安卓程序安装器吧,代码如下,保存为.bat文件就可以了。 查看源代码 打印帮助 01 @ECHO off 02 @TITLE APK安装器 03 @COLOR E
  • lh15871815717
  • lh15871815717
  • 2014-12-18 13:06
  • 7226

zz:Android测试提升效率批处理脚本

1、[查看APK文件信息.bat] ? 1 2 3 4 5 6 7 8 @ECHO OFF ECHO [查看APK包信息] ECHO --------------------...
  • TianTianHeLvCha
  • TianTianHeLvCha
  • 2016-04-07 11:56
  • 175

Android获取设备唯一标识完美解决方案

/** * deviceID的组成为:渠道标志+识别符来源标志+hash后的终端识别符 *  * 渠道标志为: * 1,andriod(a) * * 识别符来源标志: * 1, wifi mac地址(wifi); * 2, IMEI(imei); * 3, 序列号(sn)...
  • LANGZI7758521
  • LANGZI7758521
  • 2016-09-10 17:59
  • 2749
    个人资料
    • 访问:4936次
    • 积分:133
    • 等级:
    • 排名:千里之外
    • 原创:19篇
    • 转载:2篇
    • 译文:0篇
    • 评论:1条
    文章分类
    最新评论