• 批处理bat 之 Android Monkey


    实现功能:

    1.运行monkey_run.bat,直接执行monkey命令;

    2.运行monkey_stop.bat,输入PID,kill mongkey进程;

    3.同步获取logcat;

    4.同步保存CPU和内存值(top命令);

    monkey_run.bat 代码:

    @echo off
    
    if "%time:~0,1%"==" " set "time=0%time:~1%"
    set date_folder=%date:~0,4%-%date:~5,2%-%date:~8,2%
    
    if NOT EXIST MonkeyLog_%date_folder% mkdir MonkeyLog_%date_folder%
    
    adb wait-for-device
    adb shell "ps|grep com.android.commands.monkey"
    
    if "%ERRORLEVEL%"=="1" ( 
        start %~dp0Batchlogcat.bat
        start %~dp0Batch	op.bat
        start %~dp0Batchmonkey.bat
    ) else (
        echo Monkey早就运行了,不需要重复运行。
        echo 如果想重新运行,请先停止monkey!
        pause
    )

    locat.bat 代码:

    @echo off
    
    if "%time:~0,1%"==" " set "time=0%time:~1%"
    set date_folder=%date:~0,4%-%date:~5,2%-%date:~8,2%
    set time_folder=%time:~0,2%-%time:~3,2%-%time:~6,2%
    set log_name=logcat_%date_folder%-%time_folder%
    set log_path=MonkeyLog_%date_folder%
    
    adb wait-for-device
    
    echo - - - logcat window- - -
    adb logcat > ./%log_path%/%log_name%.log
    echo - - - Over! - - -

    top.bat 代码:

    @echo off
    
    if "%time:~0,1%"==" " set "time=0%time:~1%"
    set date_folder=%date:~0,4%-%date:~5,2%-%date:~8,2%
    set time_folder=%time:~0,2%-%time:~3,2%-%time:~6,2%
    set log_name=top_%date_folder%-%time_folder%
    set log_path=MonkeyLog_%date_folder%
    
    adb wait-for-device
    echo - - - top window - - -
    adb shell top -m 10 -d 1 > ./%log_path%/%log_name%.log
    echo - - - Over! - - -

    monkey.bat 代码:

    @echo off
    
    if "%time:~0,1%"==" " set "time=0%time:~1%"
    set date_folder=%date:~0,4%-%date:~5,2%-%date:~8,2%
    set time_folder=%time:~0,2%-%time:~3,2%-%time:~6,2%
    set log_name=monkey_%date_folder%-%time_folder%
    set log_path=MonkeyLog_%date_folder%
    
    adb wait-for-device
    
    echo - - - Monkey window - - -
    adb shell monkey ^
    -p package1 ^
    -p package2 ^
    --pct-touch 30 ^
    --pct-motion 20 ^
    --pct-trackball 20 ^
    --pct-pinchzoom 10 ^
    --pct-appswitch 20 ^
    --ignore-crashes ^
    --ignore-timeouts ^
    --throttle 1000 -v -v -v 2808000 > ./%log_path%/%log_name%.log
    echo - - - Over! - - -
    
    
    ::--ignore-crashes  
    ::应用程序发生任何超时错误时(如“Application Not responding”对话框),monkey继续运行
    ::--ignore-timeouts
    ::调整触摸事件的百分比,一次ACTION_DOWN,一次ACTION_UP 例如:–pct-touch 10 //百分之十为触摸事件
    ::--pct-touch 30 
    ::滑动事件,按下->移动->抬起,ACTION_DOWN ACTION_MOVE ACTION_UP
    ::--pct-motion 20 
    ::轨迹事件
    ::--pct-trackball 20
    ::双指缩放
    ::-–pct-pinchzoom 10
    ::启动Activity
    ::--pct-appswitch 20 
    ::系统按键事件,如Home、Back、Start Call、End Call及音量控制键
    ::-–pct-syskeys 0
    ::15小时:1080000(周内:晚上6点--早上9点)
    ::39小时:2808000(周末:周六晚上6点--周一早上9点)

    monkey_stop.bat 代码:

    @echo off
    
    ::方法一,直接kill进程
    adb shell "kill -9 `ps -ef | grep com.android.commands.monkey | grep -v 'grep' | awk '{print $2}'`"
    echo Monkey 已停止运行!!!
    pause
    
    ::方法二,手动输入pid后,kill进程
    ::adb shell "ps -ef | grep com.android.commands.monkey | grep -v 'grep' | awk '{print $2,$8}'"
    ::if NOT "%ERRORLEVEL%"=="1" (
    ::    set /p killmonkey=请输入pid:
    ::    ::设置变bai量延迟
    ::    setlocal EnableDelayedExpansion
    ::    adb shell kill !killmonkey!
    ::    echo Monkey 已停止运行!!!
    ::    pause
    ::) else (
    ::    echo Monkey 不存在!
    ::    pause
    ::)

    问题点:

    1.关于文件名称获得的当前时间,01:00~09:00时间段,文件名乱码

      =>解决方法:if "%time:~0,1%"==" " set "time=0%time:~1%"

    2.获取当前bat脚本相对路径

      =>解决方法:%~dp0

    3.代码太长,换行显示

      =>解决方法:连接符 ^

    4.if语句内使用set

      =>解决方法:设置变bai量延迟 setlocal EnableDelayedExpansion ,并且变量引用时使用感叹号!不使用百分号%

    5.ps后不显示grep xxx

      =>解决方法:添加 grep -v 'grep'

    6.筛选显示

      =>解决方法:添加 awk '{print $2,$8}'

    7.结合kill

      =>解决方法:使用反单引号 kill -9 ` `

  • 相关阅读:
    详解事件驱动跟消息驱动机制相比
    浏览器加载 CommonJS 模块的原理与实现
    全面理解 javascript 的 argements caller callee call apply 之caller
    在javaScript中检测数据类型的几种方式
    Netbeans IDE 安装Emmet插件并解决Emmet插件无效果问题
    JS的 try catch使用心得
    safari 浏览器 input textarea select 等不能响应用户输入
    js十大排序算法
    js实现 页面加载 完成 后顺序 执行
    原生JS封装 toast 弹层,自动关闭
  • 原文地址:https://www.cnblogs.com/zinthewind/p/14191423.html
Copyright © 2020-2023  润新知