2 a455642158 a455642158 于 2013.01.10 15:24 提问

monkeyrunner脚本运行一段时间后,与pc连接会有一些问题导致脚本异常该怎么办

脚本运行一段时间(尽可能长)只要与pc连接出现问题,例如设备offline了,那么monkeyrunner源码里的一些方法的那些异常都会报出来,如果我们的脚本里没有捕获这些异常,那么就会层层抛出直至脚本崩溃。目前还不会捕捉这些异常,希望有人解决过类似问题,帮我一把……谢谢。
目前报过的异常有:TimeoutException、AdbCommandRejectedException、Error sending touch event、Error sending press event等等,感觉都是连接有问题导致这些方法调用不了,抛出了源码里的那些方法对应的异常。
现在就想捕获异常,有异常就重启手机,重启后重新运行脚本,可是reboot重启手机的这个方法也是需要连接有效才能正常使用的,愁死人了。
还有一种情况就是脚本运行了很久后不动了,也没报异常,死活不往下运行了……

1个回答

cytown
cytown   2013.01.10 17:44
已采纳

换手机,不要用一些不稳定的手机。正常手机不会运行monkey的时候突然offline的。

是monkeyrunner,就是模拟真实手机用户点击应用的操作,每个内容到最后一步截图保存,有异常也截图保存,大概每次跑完有上千张图。然后重复……

如果是这样,我就有点明白了,问题可能存在于截图上,截图是很耗费usb带宽的行为,而且截图本身并没有被系统特别严格压力测试过,在同时和mr运行的时候会导致adb的一些冲突,导致timeout或者中断的结果,我建议你这样做,理论上可以解决:
1. 在每次循环运行完成后执行adb kill-service;adb start-service,这样重启adb连接
2. 如果1不管用,就尽量缩减截图的次数,一点点缩减,直到稳定运行

a455642158
a455642158 这个情况脚本不能运行没办法重启手机了,我试了命令行重启adb,进程关掉adb,eclipse重启adb,还不想拔掉数据线,看来是没办法了,这问题弄不了了,去做配置文件了,操作基本上都没问题了……
接近 5 年之前 回复
a455642158
a455642158 不管重启adb前是什么操作,如果要考虑重启adb之前就不正常了该怎么做呢……?现在还有一个老问题困扰就是脚本停在某一步了,不报错不退出,关了该脚本也不能执行其他脚本(有信息: could not read ok from ADB Server, error = 109, * failed to start daemon *),这是什么情况啊……
接近 5 年之前 回复
a455642158
a455642158 里面有很多小循环啊,小循环时间不定有几分钟的、几十秒的……直接点就是一个栏目有多个列表,每个列表点击后又有多个内容,对每个内容操作后截图,每个步骤的操作都会判断好多情况导致截一次图要花几分钟。
接近 5 年之前 回复
cytown
cytown 我是说你一个循环需要多久,难道需要4-5小时????如果那样,你的MR脚本应该缩减。
接近 5 年之前 回复
a455642158
a455642158 一般能运行四到五个小时,按照比例来看运行一次这还只运行了四分之一,现在是这样异常退出就重启,目前这样做脚本是一直都在跑,还没做好写配置文件接着失败的地方开始……
接近 5 年之前 回复
cytown
cytown 整个运行需要多久?
接近 5 年之前 回复
a455642158
a455642158 最外层的大循环就是整个运行,里面的小循环是可以完成的……
接近 5 年之前 回复
a455642158
a455642158 我这里两部使用的我写的脚本,测试那边用的以前的脚本我知道的他们用了至少3台,长时间的跑都会出现这种异常退出的情况,还没看到处理异常的monkeyrunner脚本,不知道我这样做合不合理啊……
接近 5 年之前 回复
cytown
cytown 如果你的系统连一次正常循环都不能完成,就只能换系统了。如果可以,就每次循环结束后重启手机。当然如果中间出现exception,当然就是要解决exception,而不是忽略。
接近 5 年之前 回复
a455642158
a455642158 现在在做用日志保存最后一步,这样重启手机后接着失败的那一步运行,不用重头开始跑,这个做好后,如果实在是检测不到停止不动的状态我就隔几个小时就重启……想法是美好的啊,其中有一个如果失误操作也会导致错误的一直运行下去的情况。
接近 5 年之前 回复
a455642158
a455642158 有点明白您的意思了,比如最坏情况截一次图我就重启adb,如果这样都出现了异常就没办法了是吧,要是重启adb之前就出现了异常该怎么办呢……?
接近 5 年之前 回复
a455642158
a455642158 也就是说这个循环没完成就异常了啊……
接近 5 年之前 回复
a455642158
a455642158 ?不知道什么时候会出现AdbCommandRejectedException啊……
接近 5 年之前 回复
cytown
cytown 每次循环后执行不会有问题,你的问题是在于并不强制执行,而是出现AdbCommandRejectedException才想起去执行,当然不对了。
接近 5 年之前 回复
a455642158
a455642158 也就是有时候offline了,执行这些命令adb kill-service;adb start-service或者adb kill-service;adb devices后仍然是offline,没办法只能重启手机或者试试拔掉数据线重新插上看看行不行,目前为止重启手机是一定行的……
接近 5 年之前 回复
cytown
cytown 每次循环后执行不会有问题,你的问题是在于并不强制执行,而是出现AdbCommandRejectedException才想起去执行,当然不对了。
接近 5 年之前 回复
a455642158
a455642158 如果是AdbCommandRejectedException异常,执行adb kill-service;adb start-service后,设备连接状态仍然是offline,脚本停止不运行的情况然后关掉该脚本,执行其他脚本也执行不了,只能拔掉数据线重新插上或者关机重启,现在程序不能拔掉数据线了希望能够检测到这种脚本停止不动不运行也不异常退出的情况然后重启手机再运行脚本。现在我已经把整个运行部分都try起来了只要有异常导致脚本退出,都不会导致脚本退出而是做重启手机处理,除非电脑重启了……汗
接近 5 年之前 回复
cytown
cytown 在每次循环运行完成后执行adb kill-service;adb start-service,这样重启adb连接
接近 5 年之前 回复
a455642158
a455642158 汗啊,要求是不停的跑,不停的截图,不让脚本退出,现在这种如果有异常要退出脚本的情况可以捕获到然后重启手机这么个笨方法。还有个问题解决不了就是脚本停住不动了,不报错,也不退出运行,关掉后,再执行其他脚本也执行不了,感觉就是被什么堵住了一样,这个目前没有想到怎么检测到,望告知……
接近 5 年之前 回复
cytown
cytown 你们做MR的目的不就是保证exception出来,然后你们好解决这些问题么?都忽略了MR的意义何在?而且重启的时候出现异常,当然你们要解决这个bug啊,而不是改MR的脚本让应用继续执行。
接近 5 年之前 回复
a455642158
a455642158 现在基本上解决了 把以前运行的那段放到try里面 有异常脚本也不会异常退出 然后做重启手机处理 但是现在又出现个问题 重启的时候出了异常没捕获 希望能够尽快解决……
接近 5 年之前 回复
suannai0314
suannai0314 这是回我的?
接近 5 年之前 回复
a455642158
a455642158 不是一样的提示,异常我在问题里写了一部分:TimeoutException、AdbCommandRejectedException、Error sending touch event、Error sending press event等等。
接近 5 年之前 回复
a455642158
a455642158 是monkeyrunner,就是模拟真实手机用户点击应用的操作,每个内容到最后一步截图保存,有异常也截图保存,大概每次跑完有上千张图。然后重复……
接近 5 年之前 回复
cytown
cytown 而如果是monkey runner,你们应该是做了几个脚本,这些脚本应该是有个执行周期的时间长度,并且有测试次数,不可能是无限循环下去跑,首先并不符合任何用户的使用习惯,也不可能真实测试出你们应用的问题,更是完全没必要的浪费时间。最终结果也只是能测试出你们测试手机的稳定性如何,没有其它效果。
接近 5 年之前 回复
cytown
cytown 是这样的,如果你是monkey test,通常我们测试的是通过的条数,比如10万,100万,会有一个值,如果能跑到这么多并且没有错误就认为通过测试了。
接近 5 年之前 回复
suannai0314
suannai0314 所有手机都是一样的错误提示?
接近 5 年之前 回复
a455642158
a455642158 没有,不可能公司那么多手机都是不正常的吧,都是测试部门用的测试手机呢……
接近 5 年之前 回复
suannai0314
suannai0314 这个问题解决了?可以给他采纳哦~回答旁边有个带圆圈的对号,点击有惊喜~
接近 5 年之前 回复
a455642158
a455642158 感谢!!!按道理说没有哪部手机可以不停的跑吧,公司的手机都是这样最长跑了一天一夜的,一般也能跑个几个小时就出现和中异常,也不一定是offline哈……现在就是出现异常后,怎样保证脚本能继续运行下去,暂时只想到重启手机再重新跑,还不知道做不做得好呢。
接近 5 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!