广告
返回顶部
首页 > 资讯 > 服务器 >实现android自动化测试部署与运行Shell脚本分享
  • 114
分享到

实现android自动化测试部署与运行Shell脚本分享

脚本测试android 2022-06-04 21:06:04 114人浏览 泡泡鱼
摘要

我的配置是linux 64, Android4.2.2的sdk。 实现的细节都在代码注释里了,变量名以及echo的内容也是说明的一部分。 主流程为: 1.检测是否指定端口的模拟器已经运行,若有则关闭 2.创

我的配置是linux 64, Android4.2.2的sdk。 实现的细节都在代码注释里了,变量名以及echo的内容也是说明的一部分。

主流程为:

1.检测是否指定端口的模拟器已经运行,若有则关闭
2.创建模拟器
3.启动模拟器
4.用ant build包,通过检查bin目录下有没有apk来确定是否成功
5.检查指定端口的模拟器是否已正常运行
6.用adb安装apk
7.启动apk的activity,让程序自己跑
8.用shell ps循环检测程序是否已退出,若已退出,检查是否sdcard是是否已成功生成报告文件
9.若报告文件不完整,即程序被中止/崩溃,重启activity
10.检测是否超时

#!/bin/bash

# by hursing 2013-10-28

# 指定port,可以不干扰其它正在运行的模拟器。根据sdk文档,port可以在5554至5584之间,最好是偶数

portNumber=5578

emulatorPID=`ps -ef | grep "emulator" | grep "port $portNumber" | awk '{print $2;}'`

if [ -n "$emulatorPID" ]; then

 echo "close emulator window"

 kill -9 $emulatorPID

fi

# 创建模拟器,force选项能覆盖已存在的模拟器,即sdcard内容也抹掉。echo no是回答不需要自定义硬件配置 echo "create avd" emulatorName="Test" echo no | android create avd --name $emulatorName --force --target android-17 --sdcard 300M --abi armeabi-v7a

# 启动模拟器,port选项指定tcp端口。&是另起进程执行 echo "start avd" emulator -avd $emulatorName -port $portNumber &

# 没有证书签名,所以是debug echo "build apk" android update project -p . ant debug if [ $? -ne 0 ]; then echo "build failed, try again now..." ant clean ant debug if [ $? -ne 0 ]; then echo "can NOT build apk!" exit 5 fi fi apkFile=`find ./bin/*.apk | grep -v "unaligned"` if [ -z "$apkFile" ]; then echo "no apk file generated!" exit 7 fi

# wait-for-device能block住脚本直到不显示offline echo "check emulator ready..." emulatorSerialNumber="emulator-$portNumber" ready=`adb devices | grep "$emulatorSerialNumber"` if [ -z "$ready" ]; then echo "emulator can NOT launch." exit 3 else ready=`adb devices | grep "$emulatorSerialNumber.*offline"` if [ -n "$ready" ]; then echo "wait-for-device" adb -s $emulatorSerialNumber wait-for-device sleep 10 fi fi

# 当adb可以安装时,模拟器未必已经初始化完成,还是会失败的,所以要检测error,试3遍。 echo "install apk" let maxTryTimes=3 while [ $maxTryTimes -gt 0 ]; do result=`adb -s $emulatorSerialNumber install $apkFile` # 'ant installd' can NOT specify device check=`echo "$result" | grep -o "Error"` if [ -z "$check" ]; then echo "successfully install apk" break; else echo "$result" echo "install failed, try again after sleeping 10 seconds" sleep 10 let maxTryTimes-=1 fi done if [ $maxTryTimes -eq 0 ]; then echo "can NOT install apk to emulator." exit 4 fi

echo "start MainActivity" activityName="com.hursing.MainActivity" packageName=`cat AndroidManifest.xml | grep -o "package=".*"" | sed 's/package="//;s/"//'` adb -s $emulatorSerialNumber shell am start -W -n "$packageName/$activityName"

heartBeat=10 echo "waiting for test finished.check every $heartBeat seconds." resultFile="/sdcard/result.txt" successFlag="End at " sleep $heartBeat let maxTimeLimit=60*10 while [ $maxTimeLimit -gt 0 ]; do running=`adb -s $emulatorSerialNumber shell ps | grep $packageName` if [ -n "$running" ]; then let maxTimeLimit-=$heartBeat echo "waiting, sleep another $heartBeat seconds..." sleep $heartBeat else report=`adb -s $emulatorSerialNumber shell cat "$resultFile"` check=`echo "$report" | grep -o "$successFlag"` if [ -z "$check" ]; then echo "app crash, run activity again..." adb -s $emulatorSerialNumber shell am start -W -n "$packageName/$activityName" else echo "app exit nORMally" break fi fi done

echo "close emulator window." kill -9 `ps -ef | grep "emulator" | grep "port $portNumber" | awk '{print $2;}'`

if [ $maxTimeLimit -eq 0 ]; then echo "Test timeout!" echo "$report" exit 9 else echo "Test Finished!" echo echo "$report" fi

java代码里有一点要注意,如果程序崩溃,弹出了"has stopped”对话框,那么ps还是能查到的,要自己调用

Thread.setDefaultUncaughtExceptionHandler

,在handler里直接System.exit(0)才行。

--结束END--

本文标题: 实现android自动化测试部署与运行Shell脚本分享

本文链接: https://www.lsjlt.com/news/18421.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 实现android自动化测试部署与运行Shell脚本分享
    我的配置是linux 64, android4.2.2的sdk。 实现的细节都在代码注释里了,变量名以及echo的内容也是说明的一部分。 主流程为: 1.检测是否指定端口的模拟器已经运行,若有则关闭 2.创...
    99+
    2022-06-04
    脚本 测试 android
  • 有哪些实现android自动化测试部署与运行Shell脚本
    本篇内容介绍了“有哪些实现android自动化测试部署与运行Shell脚本”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!主流程为:检测是否指...
    99+
    2023-06-09
  • 阿里云ECS脚本部署实现自动化运维与提升效率
    随着云计算的快速发展,越来越多的企业开始将业务部署在阿里云ECS上。然而,随着业务规模的不断扩大,手动配置和部署服务器可能会变得繁琐和耗时。为了提高运维效率,阿里云提供了ECS脚本部署功能。本文将详细说明如何使用阿里云ECS脚本部署功能。 ...
    99+
    2023-11-18
    阿里 脚本 效率
  • shell实现自动adsl拨号并检测连接状况脚本分享
    今天公司同事要我整个adsl自动重拨的shell,并检测是否连上了,这样才能保证内部测试服务器不掉网,好吧,下面我把脚本发出来. 系统:centos 5.x 脚本1: cat /root/soft_she...
    99+
    2022-06-04
    脚本 状况 shell
  • python自动化测试selenium执行js脚本实现示例
    WebDriver有2个方法执行Java Script脚本。 (1)同步执行:execute_script (2)异步执行:execute_async_script from s...
    99+
    2022-11-12
  • 怎么实现android应用程序自动化测试的批处理脚本
    本篇内容介绍了“怎么实现android应用程序自动化测试的批处理脚本”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!测试平台:兼容androi...
    99+
    2023-06-08
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作