python解决接口测试获取手机验证码问题

最近在做接口测试的时候遇到一个问题,就是有个很重要的接口要用到手机短信验证码,而其他接口都依赖于这个验证码,如果没有短信验证码就不能进行下面接口的测试,所以为了定时的验证线上的接口是否正常,而且又不修改代码,所以就想到一下解决方案,如果大家有了更好方案可以一起交流分享

android 代码

Android在收到短信后会发送一个Action为android.provider.Telephony.SMS_RECEIVED的广播,所以我们只需要写个类继承BroadcastReceiver就可以很容易地监听到短信。

  1. package com.example.getsms; import android.content.BroadcastReceiver; import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.telephony.SmsMessage; import android.text.TextUtils; import android.util.Log; public class SmsInterceptReceiver extends BroadcastReceiver { private final String TAG = "SmsRec"; private static final String SMS_EXTRA_NAME ="pdus"; @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub String message = ""; Log.e(TAG, "free message " );           Bundle extras = intent.getExtras();         if ( extras != null ) {            try {           Object[] smsExtra = (Object[]) extras.get( SMS_EXTRA_NAME );                ContentResolver contentResolver = context.getContentResolver();                                Log.e(TAG, "free message " );                for ( int i = 0; i < smsExtra.length; ++i ) {                    SmsMessage sms = SmsMessage.createFromPdu((byte[]) smsExtra[i]);                                         String body = sms.getMessageBody().toString();                    message += body;                }                                                Log.e(TAG, "free message : " + message);            } catch (Exception e) {           // TODO: handle exception           Log.e(TAG, e.getMessage());            }        }           } }

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

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

添加权限:

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

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

__author__ = ‘guozhenhua‘

#coding=utf-8

import urllib2

import os,time

#解析短信验证码

os.system("adb logcat -c")

cmd="adb logcat -d |findstr E/SmsRec"

#time.sleep(30);

while(1):

smscode= os.popen(cmd).read()

#print smscode

if (smscode!=""):

smscode=smscode.split("验证码:")[1].split(",")[0]

break;

print "验证码是:"+smscode

时间: 2024-07-29 17:35:26

python解决接口测试获取手机验证码问题的相关文章

js/jq实现获取手机验证码倒计时效果

众所周知在前段的工作中注册信息或获取当前手机号信息等需求,我们基本上都要涉及到手机号验证码,在网络上搜索的案例杂乱无章,用的时候全是坑,真心不想用了,然后自己写了一个获取手机验证码的倒计时效果.有需求的伙伴们可以看看怎么实现的. 如何获取手机验证码? 小月不知道大家是利用什么平台去获取验证码的,但是告诉大家我是在哪个平台获取的. LeanCloud :https://leancloud.cn/ 文档:https://leancloud.cn/docs/sms_guide-js.html 在这个平

获取手机验证码倒计时那些事

获取手机验证码倒计时 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>获取验证码</title> <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-sca

倒计时按钮—获取手机验证码按钮

HTML:  <input type="button" value="获取验证码">  CSS: 1 input[type=button] { 2 width: 150px; 3 height: 30px; 4 background-color: #ff3000; 5 border: 0; 6 border-radius: 15px; 7 color: #fff; 8 } 9 10 input[type=button].on { 11 backgroun

用CountDownTimer实现获取手机验证码效果

简述: CountDownTimer类用来实现倒计时效果. 构造方法接收两个参数,第一个设置倒计时长度,第二个设置倒计时间隔. 用此方法时只需复写onTick()和onFinish()这两个方法即可. 示例: package com.example.androidtest; import android.app.Activity; import android.graphics.Color; import android.os.Bundle; import android.os.CountDow

js实现免费获取手机验证码倒计时效果

<div class="input"> <input type="button" id="btn" class="btn_mfyzm" value="免费获取验证码" /> <script type="text/javascript"> var wait=5; document.getElementById("btn").disab

jquery实现获取手机验证码倒计时效果

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><script src="http://cdn.bootc

使用“互亿无线”短信验证码接口来实现发送手机验证码功能

今天 突然发神经想到要做一个发送手机验证码的功能,因为看到很多用户注册这个模块都有手机验证这个功能,于是乎,俺就上网查了很多资料,整理了一下,做了一个简单的手机验证码实现功能.不过我用的是试用账号,只可以发送30个短信,如果要更多的话,需要充值,这是我感到很遗憾的事情.下面跟着我来实现这个功能吧,大神勿喷哈. 1.首先,上互亿无线注册一个账号,http://www.ihuyi.com/,注册后你可以看到你的账号参数信息: 2.使用VS创建一个空的Web应用程序: 注册静态页面:index.htm

利用线程创建发送手机验证码的工具类

1.生成验证码类 package com.util; import java.util.Timer; import java.util.TimerTask; /** * @description 手机发送验证码工具类 */ public class MessageCode extends TimerTask{ private Timer timer; /** * @description 短信验证码的内容 */ private String messageCode; /** * @descrip

C# WinForm 使用SMS接口发送手机验证码+图形验证码+IP限制

https://blog.csdn.net/IT_xiao_guang_guang/article/details/104299983 前言 ??1.发送手机验证码用的是网建的SMS接口(http://sms.webchinese.cn/) ??2.手机验证码简单的做了以下限制: ????①发送验证码1分钟只能点击发送1次 ????②相同IP手机号码1天最多提交20次(这里我用的是本地局域网IP) ????③加入图形验证码 ??注:SMS官网上的建议还有要对手机号码次数进行限制:单个手机号码30