记录 使用shell脚本同时运行多个android设备

本文介绍了如何使用shell脚本自动化控制多台Android设备进行屏幕的熄灭和点亮操作,以提高效率。脚本通过adb命令与设备交互,并提供了将设备名自动提取和批量执行的功能,利用gnome-terminal在Ubuntu环境下开新窗口运行子线程。通过eval命令将字符串转换为可执行指令,简化了多设备操作流程。

用例的主要步骤如下:

1. 开机到主界面
2. 使 屏幕灭    执行 adb shell input keyevent 223  
3. 查看屏幕状态。应显示off    执行 adb shell "dumpsys power | grep 'Display Power' "
4. 使 屏幕亮    执行 adb shell input keyevent 224
5. 查看屏幕状态。应显示on    执行 adb shell "dumpsys power | grep 'Display Power' "
6.重复步骤2-5

#!/bin/bash

i=""
SN=$1
number=$2
adb_command10(){
    for a in `seq $number` 
    do
    adb -s $SN shell input keyevent 223  
    sleep 3        
    adb -s $SN shell "dumpsys power | grep 'Display Power' "
    sleep 3
    adb -s $SN shell input keyevent 224
    sleep 3  
    adb -s $SN shell "dumpsys power | grep 'Display Power' "
    echo "第$a轮测试完成"
    sleep 3 
    done
}

if [ "$number" != "$i" ] && [ $number -gt 0 ]
then 
    start_time=`date +%s`
    adb_command10
    end_time=`date +%s`
    echo "测试时长:$(($end_time-$start_time))"
else 
    number=200
    start_time=`date +%s`
    adb_command10
    end_time=`date +%s`
    echo "测试时长:$(($end_time-$start_time))"
fi
exec bash

嫌弃手动一台台执行太慢,又异常枯燥,写成一个循环调用方法的sh脚本,可以多台机器一起跑  ./SleepAndWake.sh DSN 200 :

使用if控制语句,调用函数,函数内使用for循环。

现在写完再看,真的是过于简单的一个脚本。

 

还有测试人员实际操作,想把adb devices也省了,不用复制粘贴机台号。emmm.....

新写一个sh脚本,就是对之前脚本的调用:

#/bin/bash
string=$(adb devices | cut -b 1-16)
DSN=(`echo $string | tr ' ' ' '`)
num=$1
str_command="gnome-terminal "
for ((i=3;i<${#DSN[@]};i++))
do
  str_command=${str_command}"--title=${DSN[$i]} --window -e \"./SleepAndWake.sh ${DSN[$i]} ${num}\" "
done
#echo $str_command
#gnome-terminal --title=A机台号 --window -e "./SleepAndWake.sh A机台号 1" --title=B机台号 --window -e "./SleepAndWake.sh B机台号 1" ......
echo `eval $str_command`

这里用了cut和 tr 指令对adb devices的执行结果字符串进行按列分割、按字符替换,得到字符串数组DSN。

我们现在测试用设备机台号都是16位。按1到16位切割,再用空格替换空格(感觉像Java中split分割方法,一样得到数组)。

cut可以指定使用参数-b,按字符列进行切割;

tr指令只能对单字符进行替换。

从DSN[3]开始,存储的就是机台号了;0~2是List,of和devices;

使用for循环拼接字符串命令,gnome-terminal命令是Ubuntu自带,可以开子线程控制台。--title指定子线程标题,--window 开新窗口 -e 执行指定命令。

eval :转换字符串->可执行指令

反单引号执行命令:`eval ${str_command}`

把新脚本放到原来的脚本同级目录下,调用新脚本只需一个参数:执行次数

比如  休眠息屏888次:  ./SleepAndWake2.0.sh 888    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值