Android自动化技术之自动monkey:shell脚本实现自动创建模拟器、启动模拟器、自动安装apk并进行monkey测试

几个关键命令

1.查找一个已经连接上电脑的设备(当然了,手机得是开启了调试模式的状态)

firstDeviceName=`adb devices|sed -n '2p'|awk '{print $1}'`

2.如果没有找到连接的设备,则自动开启模拟器

firstExistDeviceName=`android list avd -c|sed -n '1p'`

3.启动模拟器

emulator -netdelay none -netspeed full -avd $firstExistDeviceName

4.安装的命令应该是很容易理解了

adb -s $firstDeviceName install -r $lastAPK

5.启动apk

adb -s $firstDeviceName shell am start -n "你的应用的包名/第一个activity全路径" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER

6.启动monkey

adb -s $firstDeviceName shell monkey -p 你的包名 自动发生事件的次数

再看看完整代码

#! /bin/bash
cd ~/Desktop/release_apk
mkdir -p log
echo "查找正在运行的设备"
firstDeviceName=`adb devices|sed -n '2p'|awk '{print $1}'`
if [ "$firstDeviceName"x = x ] ;
    then
        echo "没有发现运行中的模拟器,尝试启动或创建一个新的模拟器"
        firstExistDeviceName=`android list avd -c|sed -n '1p'`
        if [ "$firstExistDeviceName"x = x ] ;
            then
                echo "本地不存在模拟器,请创建一个模拟器(请手动执行:android avd)"
                exit "402"
                # 找到第一个可用的镜像
                imageID=`android list targets | tr '\n' '@' | sed 's/-@/#/g' | tr '#' '\n' | grep -v 'no ABIs' | grep -v 'Available' | sed 's/id: \([0-9]*\).*/\1/g'|sed -n '1p'`
                if [ "$imageID"x = x ] ;
                    then
                        echo "没有找到可用设备,也无法创建模拟器,即将退出monkey测试!!!"
                        exit 402
                    else
                        # 创建模拟器
                        android create avd -n forMonkey -t $imageID
                        code=$?
                        if [ "$code" != "0" ] ;
                            then
                                echo "创建模拟器失败code:$code"
                                exit $code
                        fi
                        firstExistDeviceName="forMonkey"
                fi
            else 
                echo "本地存在模拟器$firstExistDeviceName"
        fi
        # 启动模拟器,在独立的进程中,将日志信息保存在launchEmulator.log,不向控制台输出
        echo "启动模拟器"
        emulator -netdelay none -netspeed full -avd $firstExistDeviceName > log/launchEmulator.log &
        echo "启动模拟器中,等待30秒后再次尝试获取运行设备名称"
        sleep 30
        firstDeviceName=`adb devices|sed -n '2p'|awk '{print $1}'`
        echo "再次尝试获取运行中的设备名称是:$firstDeviceName"
fi

echo "安装apk"
lastAPK=`ls -t *.apk | sed -n '1p'`
adb -s $firstDeviceName install -r $lastAPK > log/installAPK.log
code=$?
if [ "$code" = "0" ];
    then
        echo "安装apk成功"
    else
        echo "安装apk失败code:$code"
        exit "$code"
fi

echo "启动apk"
adb -s $firstDeviceName shell am start -n "com.jian.test/com.jian.xxx.activities.LaunchActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER
code=$?
if [ "$code" = "0" ];
    then
        echo "启动apk成功"
    else
        echo "启动apk失败code:$code"
        exit "$code"
fi

echo "启动monkey测试"
# --ignore-crashes --ignore-timeouts --monitor-native-crashes  --pct-appswitch 70
adb -s $firstDeviceName shell monkey -p com.topglobaledu.uschool 500
code=$?
if [ "$code" = "0" ];
    then
        echo "启动monkey成功"
    else
        echo "启动monkey失败code:$code"
        exit "$code"
fi
exit "0"
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值