TA的每日心情 | 无聊 2024-9-19 09:07 |
---|
签到天数: 11 天 连续签到: 2 天 [LV.3]测试连长
|
Android 4.0已经发布了,令我失望的一点是monkeyrunner工具本身没有大的提高,SDK看上去没有什么变化,但是之前曾将看到趋势,源码已经引入Ichampview和ease等新的模块,可惜源码还没有发布,不知道具体情况,况且现在的monkeyrunner也无法执行。感觉目前sdk列出的功能太少,在写脚本的时候,限制太多,好在monkeyrunner的脚本是python形式的,丰富的库文件可以弥补这一缺陷
1. adb命令的执行:os.system()
例如 adb root, adb push, adb pull, 可以用 os.system()来实现,例如os.system("adb push e:\\tmp\\email_eception.log /sdcard/")
2.目录操作: os.chdir(),os.getcwd()
os.chdir('e:\\tmp')
os.getcwd()
3. 创建以时间命名的文件夹
首先获取时间:time.ctime(), 获得的时间格式如"Mon Oct 31 15:48:30 2011",因为window不支持文件夹名包括“:”,并且带有空格也会带来兼容性的问题,可以用字符串处理函数str.replace来将空格用“_”替换,将“:”删除,st2.replace(" ","_").replace(":","")
4. 判断文件是否存在
os.path.exists(), 返回True 或 False
os.path.exists("D:\\shellwork\\devtool\\setup\\music\\setup.bat")
5. 连接之前要确保是以root身份连接的(adb root)
os.system('adb root')
os.system('adb wait-for-device')
6. startActivity来发送短信,通过 增加extra data ‘sms_body’,避开UI操作。上代码
def sendsms(dev, number, smscontent = '', ifsend = True):
''' 发送一条短信,号码必须要指定,短信内容可选
number: 发送短信的目的号码
smscontent: 短信的内容
ifsend: 是否点击短信编辑页面的发送键,将短信发送出去'''
if smscontent == '':
dev.startActivity(action = 'android.intent.action.SENDTO', data = 'sms:'+ str(number))
else:
extrasDic = {'sms_body': str(smscontent)}
dev.startActivity(action = 'android.intent.action.SENDTO', \
data = 'sms:'+ str(number), extras = extrasDic)
if ifsend:
time.sleep(3)
dev.touch(443, 816, MonkeyDevice.DOWN_AND_UP)
time.sleep(1)
keypress_home(dev)
7. startActivity 拨打电话
def makecall(dev, targetdev, number, duration = 15, ifspeaker = False, ifhangup = True, timeout = 2):
'''拨打一个电话
number: 要拨打的目标电话的号码
duration: 电话持续的时长,默认10秒钟
speaker: 是否在接通电话后打开speaker
hangup: 指定是否需要由发起电话的一端挂断电话
timeout: 接听电话一方收到incomingcall的超时时长
'''
assert(number)
dev.startActivity(action = 'android.intent.action.CALL', data = 'tel:'+ str(number))
time.sleep(5)
if ifspeaker == True:
for i in range(4): #尝试查询5次电话的状态,如果在电话中,打开扬声器
if isincall(dev):
dev.touch(80, 665, MonkeyDevice.DOWN_AND_UP)
break
time.sleep(2)
acceptcall(targetdev, timeout = 15)
time.sleep(duration)
if ifhangup:
if isincall(dev):
dev.startActivity(component = 'com.android.phone/.MiuiInCallScreen')
time.sleep(2)
dev.touch(240, 800, MonkeyDevice.DOWN_AND_UP)
8. monkeyrunner的交互解释器中使用help函数
在monkeyrunenr的交互解释器中,也许你发现了,无法用help函数,我们习惯了在python的交互式解释器中直接输入help命令来查询各种函数或者模块的用法。但是在monkeyrunner中的交互解释器中就用不了了,会提示 NameError: name 'help' is not defined,这是因为没有导入help函数。只需要到如pydoc中的help就可以使用了,如下:
from pydoc import help
|
|