----------------引子----------------

app自动化测试人员经常遇见的问题,第一:手机抛的异常导致脚本循环停止!!!!!!!!第二:app抛的异常导致脚本循环停止!!!!!,那么问题来了,如何做脚本控制才能解决以上问题呢?

在执行脚本的时候,手机抛的异常我们脚本是无法控制的,意思也就是我们catch不了的,针对手机本身throw的crash我们可以在正常的脚本执行下每次循环结束后执行下手机本身的操作,如 操作home键,操作back键,点击手机本身某个坐标等等

具体思路就是在正常脚本执行中插入操作手机操作:具体脚本如下

for i in  range(1000):
try:
restartAppTotalTime = os.popen("adb shell am start -W -S PackName/ackName/.ActivityName| findstr TotalTime >> TotalTime.log")
time.sleep(5)
#print restartAppTotalTime.read();
for x in range(5):
StartAppTOTALPss = os.popen("adb shell dumpsys meminfo -a PackName| findstr TOTAL >> StartAppTOTALPss.log")
#print StartAppTOTALPss.read();
StartAppTOTALPss = os.popen("adb shell dumpsys meminfo -a PackName | findstr Native | findstr Heap >> StartAppNativePss.log")
#print StartAppTOTALPss.read();
StartAppTOTALPss = os.popen("adb shell dumpsys meminfo -a PackName| findstr Dalvik | findstr Heap >> StartAppDalvikPss.log")
#print StartAppTOTALPss.read();
restartAppCpuThr = os.popen("adb shell top -d 1 -n 2 -m 1 -s cpu | findstr PackName >> AppCpuThr.log")
#print restartAppCpuThr.read();
time.sleep(3)
#出现异常按home键--防止手机系统本身抛的异常弹框
HomeKeyStart = os.popen("adb shell input keyevent 3")
#出现异常点击返回键退出APP程序--防止手机系统本身抛的异常弹框
BackKeyStart = os.popen("adb shell input keyevent 4")
time.sleep(1)
BackKeyEnd = os.popen("adb shell input keyevent 4")

如果系统throw的crash是一个系统的弹框,也可以确认弹框在手机的坐标位置,然后关闭这个弹框 可以用adb shell input tap X Y

具体如何确定X和Y值可以问度娘,度娘会告诉你用那些工具譬如ps等等~~~

好了,以上就是解决手机本身throw的crash。

那么如果是app本身trhow的crash那么久容易简单多了!!!!

最简单直接粗暴的办法就是force-stop!!!~~~~

或者操作手机本身!!!具体代码如下

except Exception,e:
print Exception,":",e
print u"在没有出现异常的情况下执行的循环次数为:"+i
#出现异常点击返回键退出APP程序
BackKeyStart = os.popen("adb shell input keyevent 4")
time.sleep(1)
BackKeyEnd = os.popen("adb shell input keyevent 4")
#出现异常按home键
HomeKeyStart = os.popen("adb shell input keyevent 3")
#强制杀死进程
StopApp = os.popen("adb shell am force-stop PackName")
continue

那么又一个问题来了!!!

如何记录app本身再循环执行时出现的异常次数呢?

用的是print方法向文件中写入内容

import os
os.chdir("/usr/tem")
char="my name is test"
f = open("test.txt","w")
print >>f,char

浅谈python 手机crash和app crash循环执行问题的更多相关文章

  1. 浅谈Python时间模块

    浅谈Python时间模块 今天简单总结了一下Python处理时间和日期方面的模块,主要就是datetime.time.calendar三个模块的使用.希望这篇文章对于学习Python的朋友们有所帮助 ...

  2. 浅谈Python在信息学竞赛中的运用及Python的基本用法

    浅谈Python在信息学竞赛中的运用及Python的基本用法 前言 众所周知,Python是一种非常实用的语言.但是由于其运算时的低效和解释型编译,在信息学竞赛中并不用于完成算法程序.但正如LRJ在& ...

  3. 浅谈python字符串存储形式

    http://blog.csdn.net/zhonghuan1992 钟桓 2014年8月31日 浅谈python字符串存储形式 记录一下自己今的天发现疑问而且给出自己现有知识有的回答. 长话短说,用 ...

  4. 开发技术--浅谈Python函数

    开发|浅谈Python函数 函数在实际使用中有很多不一样的小九九,我将从最基础的函数内容,延伸出函数的高级用法.此文非科普片~~ 前言 目前所有的文章思想格式都是:知识+情感. 知识:对于所有的知识点 ...

  5. 开发技术--浅谈python数据类型

    开发|浅谈python数据类型 在回顾Python基础的时候,遇到最大的问题就是内容很多,而我的目的是回顾自己之前学习的内容,进行相应的总结,所以我就不玩基础了,很多在我实际生活中使用的东西,我会在文 ...

  6. 开发技术--浅谈python基础知识

    开发|浅谈python基础知识 最近复习一些基础内容,故将Python的基础进行了总结.注意:这篇文章只列出来我觉得重点,并且需要记忆的知识. 前言 目前所有的文章思想格式都是:知识+情感. 知识:对 ...

  7. 浅谈 js 正则字面量 与 new RegExp 执行效率

    原文:浅谈 js 正则字面量 与 new RegExp 执行效率 前几天谈了正则匹配 js 字符串的问题:<js 正则学习小记之匹配字符串> 和 <js 正则学习小记之匹配字符串优化 ...

  8. [转]浅谈Python web框架

    说到web framework,Ruby的世界Rails一统江湖,而Python则是一个百花齐放的世界,各种micro-framework.framework不可胜数,不完全列表见:http://wi ...

  9. 浅谈Python Web的五大框架

    说到Web Framework,Ruby的世界Rails一统江湖,而Python则是一个百花齐放的世界.各种micro-framework.framework不可胜数. 尽管还有一大脚本语言PHP也有 ...

随机推荐

  1. 巧用css text-indent减小中文标点符号的占位大小

    由于设计需要,我们的页面中经常会有如下效果: 可是我们实现出来的效果确实这样的: 看起来两行文本没有对齐嘛,仔细检查后原来是[字符的原因,因为是中文标点符号占半个字的位置.不信?选中下汉字标点符号看一 ...

  2. Vue.js自定义指令的用法与实例

    市面上大多数关于Vue.js自定义指令的文章都在讲语法,很少讲实际的应用场景和用例,以致于即便明白了怎么写,也不知道怎么用.本文不讲语法,就讲自定义指令的用法. 自定义指令是用来操作DOM的.尽管Vu ...

  3. RabbitMQ安装和使用(和Spring集成)

    一.安装Rabbit MQ Rabbit MQ 是建立在强大的Erlang OTP平台上,因此安装Rabbit MQ的前提是安装Erlang.通过下面两个连接下载安装3.2.3 版本: 下载并安装 E ...

  4. MyBatis 源码分析——SqlSession接口和Executor类

    mybatis框架在操作数据的时候,离不开SqlSession接口实例类的作用.可以说SqlSession接口实例是开发过程中打交道最多的一个类.即是DefaultSqlSession类.如果笔者记得 ...

  5. java_JDBC(1)

    Java连接Oracle步骤: 1.注册加载驱动 驱动名:DRIVER="oracle.jdbc.driver.OracleDriver";Class.forName(" ...

  6. ArcGIS制图表达Representation-制图表达原理

    ArcGIS制图表达技术-制图表达原理 by 李远祥 在讲述原理之前,需要对上一章内容进行一些必要的补充说明.既然制图表达有很多优势,是不是什么情况下都可以使用制图表达技术呢?如果有以下的一些特殊的要 ...

  7. Swift 面向对象解析(二)

    接着上面一篇说的内容: 一 继承: 苹果继承与水果,苹果是水果的子类,则苹果是一种特殊的水果:这就是继承的关系,这个我们学OC的时候相信也都理解了,就不再描述定义了,下面的就叫继承: class ZX ...

  8. Linux驱动技术(八) _并发控制技术

    为了实现对临界资源的有效管理,应用层的程序有原子变量,条件变量,信号量来控制并发,同样的问题也存在与驱动开发中,比如一个驱动同时被多个应用层程序调用,此时驱动中的全局变量会同时属于多个应用层进程的进程 ...

  9. 微信公众号开发总结(Node.js + express + winston)

    关于订阅号.服务号.企业号 官方定位 订阅号:主要偏于为用户传达资讯(类似报纸杂志),认证后每天可以群发一条消息,可达到宣传效果,构建与读者之间更好的沟通和管理模式. 服务号:主要偏于服务交互(类似银 ...

  10. c#访问存储过程

    // 2015/07/04 // 访问存储过程 using System; using System.Collections.Generic; using System.Linq; using Sys ...