python解决接口测试获取手机验证码问题的方法:
Android在收到短信后会发送一个Action为android.provider.Telephony.SMS_RECEIVED的广播,所以我们只需要写个类继承BroadcastReceiver就可以很容易地监听到短信。packagecom.example.getsms;
importandroid.content.BroadcastReceiver;
importandroid.content.ContentResolver;
importandroid.content.Context;
importandroid.content.Intent;
importandroid.os.Bundle;
importandroid.telephony.SmsMessage;
importandroid.text.TextUtils;
importandroid.util.Log;
publicclassSmsInterceptReceiverextendsBroadcastReceiver{
privatefinalStringTAG="SmsRec";
privatestaticfinalStringSMS_EXTRA_NAME="pdus";
@Override
publicvoidonReceive(Contextcontext,Intentintent){
//TODOAuto-generatedmethodstub
Stringmessage="";
Log.e(TAG,"freemessage");
Bundleextras=intent.getExtras();
if(extras!=null){
try{
Object[]smsExtra=(Object[])extras.get(SMS_EXTRA_NAME);
ContentResolvercontentResolver=context.getContentResolver();
Log.e(TAG,"freemessage");
for(inti=0;i
SmsMessagesms=SmsMessage.createFromPdu((byte[])smsExtra[i]);
Stringbody=sms.getMessageBody().toString();
message+=body;
}
Log.e(TAG,"freemessage:"+message);
}catch(Exceptione){
//TODO:handleexception
Log.e(TAG,e.getMessage());
}
}
}
}
AndroidManifest.xml里注册一下接收器:
添加权限:
python 代码,主要通过adb log来获取apk包所截取的短信信息,然后进行分析后既可使用。__author__='guozhenhua'
#coding=utf-8
importurllib2
importos,time
#解析短信验证码
os.system("adblogcat-c")
cmd="adblogcat-d|findstrE/SmsRec"
#time.sleep(30);
while(1):
smscode=os.popen(cmd).read()
#printsmscode
if(smscode!=""):
smscode=smscode.split("验证码:")[1].split(",")[0]
break;
print"验证码是:"+smscode
更多Python知识请关注Python自学网