小编给大家分享一下python解决接口测试获取手机验证码方法,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨方法吧!

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";@OverridepublicvoidonReceive(Contextcontext,Intentintent){//TODOAuto-generatedmethodstubStringmessage="";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<smsExtra.length;++i){SmsMessagesms=SmsMessage.createFromPdu((byte[])smsExtra[i]);Stringbody=sms.getMessageBody().toString();message+=body;}Log.e(TAG,"freemessage:"+message);}catch(Exceptione){//TODO:handleexceptionLog.e(TAG,e.getMessage());}}}}

AndroidManifest.xml里注册一下接收器:

<receiverandroid:name=".SmsInterceptReceiver"><intent-filter><actionandroid:name="android.provider.Telephony.SMS_RECEIVED"/></intent-filter></receiver>

添加权限:

<uses-permissionandroid:name="android.permission.RECEIVE_SMS"/>

python 代码,主要通过adb log来获取apk包所截取的短信信息,然后进行分析后既可使用。

__author__='guozhenhua'#coding=utf-8importurllib2importos,time#解析短信验证码os.system("adblogcat-c")cmd="adblogcat-d|findstrE/SmsRec"#time.sleep(30);while(1):smscode=os.popen(cmd).read()#printsmscodeif(smscode!=""):smscode=smscode.split("验证码:")[1].split(",")[0]break;print"验证码是:"+smscode

看完了这篇文章,相信你对python解决接口测试获取手机验证码方法有了一定的了解,想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!