adb 测试手机脚本

总的来说,价值不大,仅仅是记录。主要是发现自己写的东西,没有成品的appium好用。

不过由于嵌入式设备无法安装python,所以我这份shell脚本,也算有点用处吧。其实直接用笔记本电脑就行。。。。

介绍一下使用背景,有一台apk手机,有一台终端机器,通过wifi相连接,正常情况下是apk手机操作终端机器进行一些操作。而我写的自动化测试脚本,则是在终端上运行,自动在apk上执行相关操作,模拟apk操作终端的场景。本来想把脚本放到手机上的,但没root,搞不定。

这里如果使用appium的话,就是在笔记本上运行,自动在apk上执行相关操作,模拟apk操作终端的场景。

具体分成了两个脚本,

1,具体的操作执行,并对每一步的执行结果进行判断。

2,调用操作脚本,如果操作出错则收集相关log并打包保存,每次操作后重启机器。反复运行。

#!/bin/sh
test_home=/home/5g_bbu/autotest
START_DATE=`date +%Y%m%d%H%M | tr [A-Z] [a-z]`
log_echo(){
    DATE_STRING=`date +%Y%m%d%H%M | tr [A-Z] [a-z]`
    echo "${DATE_STRING}" $@
    echo "${DATE_STRING}" $@ >> /home/5g_bbu/autotest/test.log
}

reboot_dev(){
    if [ "$1"x == "zpp"x ] ; then
        log_echo "reboot zpp"
        sshpass -p root ssh root@10.16.1.13 "/sbin/reboot"
    fi
    if [ "$1"x == "qck"x ] ; then
        log_echo "reboot qck"
        sshpass -p root ssh root@10.16.1.12 "/sbin/reboot"
    fi
    if [ "$1"x == "zkb"x ] ; then
        log_echo "reboot zkb"
        sshpass -p root ssh root@10.16.1.1 "/sbin/reboot"
    fi
}


###################################################################
#####################      main start     #########################
###################################################################
##测试开始
log_echo "start autotest"
##休眠2分钟,等bbu完成启动,连接手机。
if [ "0"x != "$#"x ] ; then
    echo "debug mode, no need sleep"
else
    log_echo "sleep 80"
    sleep 80
fi

cd ${test_home}
##执行脚本
sudo ./autotest.sh
ret=$?
##判断返回值
if [ "2"x == "${ret}"x ] ; then
    log_echo "first try get error"
else
    ##一次开机,两次执行
    sudo ./autotest.sh
    ret=$?
fi

##判断返回值
if [ "2"x == "${ret}"x ] ; then
    #log_echo "get error, stop autotest"
    log_echo "get error, tar log"
    cp /var/log/cam.log                                        ${test_home}/bbu.log
    sshpass -p root scp root@10.16.1.12:/flashDev/log/cam.log  ${test_home}/qck.log
    sshpass -p root scp root@10.16.1.13:/flashDev/log/cam.log  ${test_home}/zpp.log
    sshpass -p root scp root@10.16.1.1:/mnt/log/cam.log        ${test_home}/zkb.log
    tar -cf ${START_DATE}_error_log.tar bbu.log qck.log zpp.log zkb.log test.log
    #exit 1
fi

reboot_dev "zpp" &
reboot_dev "zkb" &
reboot_dev "qck" &
sleep 3
log_echo "finished, restart bbu"
reboot
 

#!/bin/sh
#connect cmd
log_echo(){
    DATE_STRING=`date +%Y%m%d%H%M | tr [A-Z] [a-z]`
    echo "${DATE_STRING}" $@
    echo "${DATE_STRING}" $@ >> /home/5g_bbu/autotest/test.log
}

#dump cmd
dump_page(){
    rm -f /home/5g_bbu/autotest/window_dump.xml
    adb shell rm -f /sdcard/window_dump.xml
    for i in $(seq 1 10)  
    do   
        if [ ! -f "/home/5g_bbu/autotest/window_dump.xml" ] ; then
            sleep 1
            adb shell uiautomator dump
            adb pull /sdcard/window_dump.xml
        else
            return
        fi
    done
}
#check_text cmd
check_text(){
    dump_page
    if [ ! -f "/home/5g_bbu/autotest/window_dump.xml" ] ; then
        log_echo "error: dump page failed, return 1"
        return 1
    fi
    sed -i 's/index/\r\n/g' /home/5g_bbu/autotest/window_dump.xml
    sed -i 's/\"//g' /home/5g_bbu/autotest/window_dump.xml
    sed -i 's/=//g' /home/5g_bbu/autotest/window_dump.xml
    local findresource=$1
    local findstr=$2
    local isfind=""
    isfind=`cat window_dump.xml | grep ${findresource} | grep ${findstr}`
    if [ -z "${isfind}" ] ; then
        #log_echo "not find ${findresource} ${findstr}, return 1"
        return 1
    else
        return 0
    fi
}

#check every 5 secends, max 250 secends.
check_wait_text(){
    for i in $(seq 1 50)  
    do
        check_text $@
        if [ "0"x != "$?"x ] ; then
            sleep 5
            continue
        else
            log_echo "get $@"
            return 0
        fi
    done
    log_echo "not find $@"
    return 1
}

#check_page cmd
check_page(){
    local pagename=$1
    local ispage=`adb shell dumpsys window windows | grep mCurrent |grep ${pagename}`
    if [ -z "${ispage}" ] ; then
        log_echo "error: not find page ${pagename}, return 1"
        return 1
    else
        log_echo "find page ${pagename}, return 0"
        return 0
    fi
}

connect_phone(){
    local devicenum=0
    local i=1
    local j=250
    local islock=`adb shell dumpsys window policy|grep mIsShowing|grep false`
    if [ ! -z "${islock}" ] ; then
        log_echo "already connected, return 0"
        return
    fi

    for i in $(seq 1 50)  
    do
        for j in  $(seq 250 252)
        do
            adb disconnect 10.16.1.250
            adb disconnect 10.16.1.251
            adb disconnect 10.16.1.252
            sleep 2
            adb kill-server
            sleep 2
            adb connect 10.16.1.${j}
            sleep 2
            adb shell echo 0
            devicenum=`adb devices|wc -l`
            let devicenum--
            let devicenum--
            if [ "1"x != "${devicenum}"x ] ; then
                continue
            fi
            sleep 1
            islock=`adb shell dumpsys window policy|grep mIsShowing|grep false`
            if [ -z "${islock}" ] ; then
                continue
            else
                log_echo "connect end, ${i}, ${j}"
                return
            fi
        done
        log_echo "try connect times ${i}"
    done
    log_echo "cannot connect device, or phone lock, exit 1"
    exit 1
}

kill_start_app(){
##多任务按键,清除当前任务。杀掉app
    adb shell input keyevent KEYCODE_HOME
    adb shell input keyevent KEYCODE_MENU
    sleep 1
    adb shell input tap 550 2050
    sleep 1
    adb shell input keyevent KEYCODE_HOME
    sleep 1
##启动app
    adb shell am start com.hxct.mips.nr/com.hxct.mips.lte.ui.WelcomeActivity
    sleep 10
}

login_app(){
    ##输入admin 密码
    adb shell input tap 450 850
    sleep 1
    adb shell input text "admin"
    sleep 1
    adb shell input tap 500 1150
    sleep 10
}

connect_start_login_app(){
    for i in $(seq 1 20)
    do
        connect_phone
        kill_start_app
        check_page "LoginActivity"
        if [ "0"x != "$?"x ] ; then
            log_echo "app start failed, not login page, try again"
            continue
        fi
        login_app
        ##验证是否登录成功,进入app主界面
        check_page "MainActivity1"
        if [ "0"x != "$?"x ] ; then
            log_echo "app login failed, not login page, try again"
            continue
        else
            log_echo "connect , start , login app end"
            sleep 5
            check_text "cellState_05" "基站异常"
                if [ "0"x == "$?"x ] ; then
                log_echo "ERROR: cell0 status error, exit 2"
                exit 2
            fi
            return
        fi
    done
    log_echo "connect and login app failed, just exit 1"
    exit 1
}

cell_setup(){
    ##进入建站页面
    sleep 2
    adb shell input tap 700 2000
    sleep 2
    check_page "SelectImsiActivity"
    if [ "0"x != "$?"x ] ; then
        return 1
    fi

    ##进入imsi选择页面
    sleep 2
    adb shell input tap 500 300
    sleep 2
    check_page "PeopleManagerActivity"
    if [ "0"x != "$?"x ] ; then
        return 1
    fi
    ##选择imsi
    sleep 2
    adb shell input tap 50 350
    sleep 2
    check_text "cboxPeople" "checkedtrue"
    if [ "0"x != "$?"x ] ; then
        return 1
    fi

    ##返回建站页面
    sleep 2
    adb shell input tap 600 2000
    sleep 2
    check_page "SelectImsiActivity"
    if [ "0"x != "$?"x ] ; then
        return 1
    fi

##开始建站,返回主页面
    sleep 2
    adb shell input tap 600 2150
    sleep 2
    check_page "MainActivity1"
    if [ "0"x != "$?"x ] ; then
        return 1
    fi
    return 0
}

cell_delete(){
## del cell
    sleep 2
    check_text  "btnLocation" "停止定位"
    if [ "0"x != "$?"x ] ; then
        return 1
    fi
    ## click 停止定位
    adb shell input tap 800 2000
    sleep 2
    check_text "md_content" "是否删除"
    if [ "0"x != "$?"x ] ; then
        return 1
    fi
## click ok
    adb shell input tap 875 1275
    ##click 等待删站开始
    sleep 2
    check_text "md_content" "是否删除"
    if [ "0"x == "$?"x ] ; then
        return 1
    fi
    log_echo "cell0 del ok"
}
#######################################################################
#######################################################################
#######################################################################
#init
cd /home/5g_bbu/autotest
##连接手机,启动app,登录app,建站

for i in $(seq 1 10)
do
    connect_start_login_app

    check_wait_text "cellState_05" "已就绪"
    if [ "0"x != "$?"x ] ; then
        log_echo "ERROR: cell0 not ready, exit 2"
        exit 2
    fi
    log_echo "cell0 ready, start setup"
    cell_setup
    if [ "0"x == "$?"x ] ; then
        log_echo "send cell0 setup cmd success, wait for setup finished"
        break
    fi
    if [ "10"x == "${i}"x ] ; then
        log_echo "cell0 send setup cmd err, exit 1"
        exit 1
    fi
    log_echo "cell0 send setup cmd err, loop ${i}"
done

##等待建站结束
log_echo "setup cell, sleep 30"
sleep 30
check_wait_text "cellState_05" "成功"
if [ "0"x != "$?"x ] ; then
    log_echo "error: cell0 not setup success, exit 2"
    exit 2
fi

##建站完成后,等一等。
log_echo "cell0 setup end, sleep 30"
sleep 30

##删站
log_echo "cell0 delete begin"
for i in $(seq 1 10)
do
    cell_delete
    if [ "0"x == "$?"x ] ; then
        log_echo "cell delete ok, loop ${i}"
        break
    fi
    ##检查次数
    if [ "10"x == "${i}"x ] ; then
        log_echo "cell0 send setup cmd err, exit 1"
        exit 1
    fi
    log_echo "cell delete err, loop ${i}"
    ##重启app
    connect_start_login_app
    ##检查基站是否建站成功
    check_text "cellState_05" "已就绪"
    if [ "0"x == "$?"x ] ; then
        log_echo "cell0 status ready, no need delete"
        break
    fi
    check_text "cellState_05" "成功"
    if [ "0"x != "$?"x ] ; then
        log_echo "ERROR: cell0 not setup,can not delete, exit 2"
        exit 2
    fi
done
##等待删站结束
sleep 20
check_text "cellState_05" "基站异常"
if [ "0"x == "$?"x ] ; then
    log_echo "ERROR: cell0 error, exit 2"
    exit 2
fi

check_wait_text "cellState_05" "已就绪"
if [ "0"x != "$?"x ] ; then
    log_echo "error: cell0 del error, exit 2"
    exit 2
fi

##删站完成,退出
adb disconnect 10.16.1.250
adb disconnect 10.16.1.251
adb disconnect 10.16.1.252
sleep 2
adb kill-server
exit 0
log_echo "end"
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值