使用自动化测试获取手机短信验证码

 目前在职测试开发,,写一些脚本,个人认为这职业不科学不应该有的职业,测试就是测试,开发就是开发,运维还是老鸟,这行业总能折腾些莫名其妙的东西出来,刚做这行时学的第一门语言是bash shell, 去新去单位上班直接写了个一键搭建测试环境的测试脚本,本来不想干测试了,好好做微信小程序开发,可是苦于学历不高,时间不够,还有开发工作很累,工资行情也差不了多少,

  不扯了,说这些是因为最近由于一些蹊跷的事情,之前做过人力老板的李某人把我简历给了一家外包,让我以二等公民的身份去做自动化,我想着...项目多有挑战性,加上很长时间没有真正做过测试了,手痒痒就去了,之前做过一些接口自动化,自学过robotframework框架,来了之后才知道这是在做web端和andriod端的UI自动化测试,选好框架码好码就可以RUN了嘛!,用例倒是也简单,就是一些页面展示检查和图形比对....话不多吹

  可是一看需求,一接触就慌了,这TM不适合做自动化呀,第一, 数据查询类web端,这种就没必要做自动化还是功能点点来的快;第二, 主使用环境是IE .最重要的是由于安全原因和现网使用:不用允许留后门,设置万能码,上上下下协调了多少次就是不给解决,这样每次登陆就有2大门槛 1,短信验证码 2,图形验证码

  依据这两个问题,自己查找解决的办法,网上的方法大都是打酱油的多,查了很多也问了很多人,无果,没办法只能自己解决,短信验证码自动获取稍微的简单一些就从这儿入手,我的思路是:既然python处理数据存储也比较方便简单就用它结合selenium来做此产品的框架吧,首先,如果能实时的把短信存储到一份文件里就方便python去读取了,再把读取到的最新短信字段,通过截取数字,发送到输入框不就就搞定了么?

  好了! 需要一个有权限的 APK 在手机实时存储短信到手机内存 /sdcard/smslog.txt 里(外部SD卡也可以,能通过adb命令访问到):

/*****  ......try {
long timestamp = System.currentTimeMillis();
String time = formatter.format(new Date());
String fileName = "smsLog.txt";
if (Environment.getExternalStorageState().equals(Environment.MOUNTED)) {
String path = Environment.getExternalStorageDirectory()+"/";
***
if (!dir.exists()) {
dir.mkdirs();
}*fos.write((time + " " + s).getBytes());
fos.close();
}
return fileName;
} catch (Exception e) {
Log.e("sms", "an error occured while writing file...", e);
}
return null;
}*******/

注册一下接收器:

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

添加下权限:

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

android脚本好了,签名+打包,装入手机就好了,安装实验一下:安装时我都是一些权限都打开给到这个APK

  自动生成了一个smslog.txt 再打开看一下内容,能正常记录,下面用写一个python脚本截取最后一段的最后四个数字就可以了

通过cmd

adb shell cat /sdcard/smsLog.txt

 成功显示文件里的内容

2017-05-16-16-39-27 您好,你的短信验证码为7959
2017-05-16-16-40-09 您好,你的短信验证码为6474
2017-05-16-16-45-22 您好,你的短信验证码为4664
2017-05-16-17-19-47 您好,你的短信验证码为3320
2017-05-16-17-21-20 您好,你的短信验证码为3146
2017-05-16-17-27-40 您好,你的短信验证码为2709
2017-05-16-17-27-43 您好,你的短信验证码为9421
2017-05-16-17-27-46 您好,你的短信验证码为5035
2017-05-16-17-27-48 您好,你的短信验证码为2212
2017-05-16-17-27-49 您好,你的短信验证码为5745
2017-05-16-17-28-28 您好,你的短信验证码为5409
2017-05-16-17-28-32 您好,你的短信验证码为1176
2017-05-16-17-28-33 您好,你的短信验证码为8708
2017-05-16-17-28-35 您好,你的短信验证码为3997
2017-05-16-17-28-37 您好,你的短信验证码为3567
2017-05-16-18-45-57 您好,你的短信验证码为3060

在python脚本中再构个函数就解决了

def getSma():adb = "adb shell cat /sdcard/smsLog.txt"smsLog = os.popen(adb).readlines()smscode = smsLog[-1][-6:-2]return smscode

 OK! 脚本登陆RUN,步骤到点击发送验证码之后成功获取并自动填入,短信验证码成功解决,提升了脚本的执行效率和自动化覆盖率!  下周再开始解决图形验证码自动识别问题, 之前用UFT试过识别率太低,这款商业软件越做越不值钱了. 咱不再去求人,自己解决,活着就是为了折腾.

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/184617.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

夜莺项目发布 v6.4.0 版本,新增全局宏变量功能

大家好&#xff0c;夜莺项目发布 v6.4.0 版本&#xff0c;新增全局宏变量功能&#xff0c;本文为大家简要介绍一下相关更新内容。 全局宏变量功能 像 SMTP 的配置中密码类型的信息&#xff0c;之前都是以明文的方式在页面展示&#xff0c;夜莺支持全局宏变量之后&#xff0c;可…

kibana安装

kibana安装下载注意事项 地址&#xff1a;curl -O https://artifacts.elastic.co/downloads/kibana/kibana-7.16.3-linux-x86_64.tar.gz 下载后直接解压启动即可 1. 但需要使用非root用户启动 &#xff0c;root用户启动会报错 2. kibana需要和elasticsearch版本一致 不然…

vue3通过el-dropdown实现动态菜单切换页面

这是效果图 首先是主页index.vue <template><el-row><el-col :span"20"><!-- 顶部菜单 --><div v-if"showTop"><topmenu /></div><!-- 右侧下方区域动态切换的内容 --><div style"flex: 1;&quo…

css浮动属性学习

在此文&#xff0c; html菜单的基本制作-CSDN博客 已经看到css 浮动属性的效果&#xff1b;下面单独看一下浮动属性&#xff1b; 做4个div&#xff0c;设置不同的背景色&#xff0c;不为div添加float属性&#xff1b;效果如下&#xff1b; 因为div是块级元素&#xff0c;默认…

上海震坤行:水泥行业数字化采购的趋势、策略与实践

上海震坤行&#xff1a;水泥行业数字化采购的趋势、策略与实践 在中国水泥协会发布的《2023年上半年水泥行业经济运行及下半年展望》中提到了水泥行业的发展现状——2023年上半年&#xff0c;在全球经济增长放缓、国内经济延续恢复态势、但市场需求不足的宏观环境下&#xff0…

【Windows】解决Windows11错误0x80190001

1. 安装Fiddler网络调试工具 下载链接&#xff1a;Fiddler Classic 注&#xff1a;获取安装包的过程中可能要获取邮箱信息&#xff0c;但不用验证邮箱&#xff0c;大概是给你的邮箱发广告信息&#xff0c;问题不大。 在“开始”界面找到Fiddler Classic&#xff0c;点击运行…

办公用品领用管理系统能做什么?如何优化企业运营管理工作?

办公用品相对于公司其他的固定资产来说&#xff0c;大多数都属于低值易耗品&#xff0c;东西虽小但必须要有&#xff0c;且种类较多&#xff0c;因此制定适当的制度对于日常管理来说是十分必要的流程&#xff0c;行政人员也需要根据不同的需求去进一步的完善。然而&#xff0c;…

maven 常用命令解析

目录 maven 是什么 Maven 目录结构 maven 常用命令解析 mvn clean mvn validate mvn compile mvn test mvn package mvn verify mvn install mvn site mvn deploy maven 是什么 Maven 是一个流行的项目管理和构建工具&#xff0c;用于帮助开发人员管理 Java 项目的…

【产品经理】AI在SaaS产品中的应用及挑战

随着ChatGPT大模型在全球的爆火&#xff0c;AI迅速在各个行业内&#xff0c;助力于各行业的效率提升。而SaaS领域&#xff0c;AI同样也大有可为。 AI&#xff08;人工智能&#xff0c;Artificial Intelligence的缩写&#xff09;近一年来一直处于舆论风口&#xff0c;随着ChatG…

「Linux」进程等待与替换

&#x1f4bb;文章目录 &#x1f4c4;前言进程等待进程等待的概念进程等待的方法 进程替换进程替换的概念替换方式 &#x1f4d3;总结 &#x1f4c4;前言 在如今的时代&#xff0c;多进程编程已经变成了必不可少的一部分&#xff0c;而进程等待、进程替换这两个概念都是作为多进…

【matlab程序】图像最大化填充画布

【matlab程序】图像最大化填充画布 不做任何修饰&#xff1a; 修饰&#xff1a; 图片 往期推荐 图片 【python海洋专题一】查看数据nc文件的属性并输出属性到txt文件 【python海洋专题二】读取水深nc文件并水深地形图 【python海洋专题三】图像修饰之画布和坐标轴 【Pytho…

2023-简单点-树莓派-camera module 3介绍

Raspberry Pi Camera Module 3 介绍开头先说&#xff0c;注意事项libcamera感光芯片和驱动的兼容图额外&#xff1a;不同module的对应的参数图用bullseye系统测试摄像头预览窗口拍摄静态图片bayer raw图像获取超长曝光视频流raw视频流 ref 介绍 树莓派镜像在Bullseye版本之后&…

高效的将两个文件夹中多余的文件删除

高效的将两个文件夹中多余的文件删除 解决方案 之前使用的是这个方法&#xff0c;但是图像太多&#xff0c;需要删除的有70W张&#xff0c;得删10多天。。 将两个文件夹中重复的图象删除 解决方案 先将image图像复制一份&#xff0c;然后改名为txt import osdef change_file…

论文笔记:Confidential Assets

Confidential Assets 描述了一种称为“保密交易”的方案&#xff0c;该方案模糊了所有UTXO的金额&#xff0c;同时保持了不创建或销毁硬币的公共可验证性。进一步将此方案扩展到“保密资产”&#xff0c;一种单一的基于区块链的分类帐可以跟踪多种资产类型的方案。将保密交易扩…

Attention机制(笔记)

参考&#xff1a;2.3.2注意力机制-part1_哔哩哔哩_bilibili 什么是attention&#xff1f; 答&#xff1a;注意力放在事物最有辨识度的部分 attention计算机制&#xff1a; 为什么用这个公式可以得到attention&#xff1f; 补充说明&#xff08;chatGPT给出的解释&#xff09;&…

值得收藏的15 个好用的 iPad/iPhone 数据恢复工具

有时您需要从移动或平板设备恢复关键数据。 许多人已经开始在手机上存储重要文件&#xff0c;因为他们可以在旅途中或现在几乎在任何情况下轻松访问数据。 不言而喻; 您只需在手机上轻轻一按&#xff0c;即可轻松访问电子邮件、共享图片、编辑和共享文档、支付账单等。一般来…

【Openstack Train安装】七、glance安装

Glance是为虚拟机的创建提供镜像的服务&#xff0c;我们基于Openstack是构建基本的IaaS平台对外提供虚拟机&#xff0c;而虚拟机在创建时必须为选择需要安装的操作系统&#xff0c;Glance服务就是为该选择提供不同的操作系统镜像。Glance提供Restful API可以查询虚拟机镜像的me…

Flutter创建TabBar

使用TabBar和TabBarView来创建一个包含"首页"、"分类"和"我的"的TabBar。每个Tab对应一个Tab控件&#xff0c;TabBarView中的每个页面对应一个Widget。 1.Tab使用自定义图标和颜色 一般UI设计的图会带渐变色之类的&#xff0c;应该保持图片的原…

【实战教程】PHP如何轻松对接阿里云直播?

1. 配置阿里云直播的推流地址和播放地址 使用阿里云直播功能前&#xff0c;首先需要在阿里云控制台中创建直播应用&#xff0c;然后获取推流地址和播放地址。 推流地址一般格式为&#xff1a; rtmp://{Domain}/{AppName}/{StreamName}?auth_key{AuthKey}-{Timestamp}-{Rand…

什么是API? (应用程序编程接口)

我们经常听到 API 这个专业名称。那么什么是 API 呢&#xff1f; 定义 API&#xff08;Application Programming Interface&#xff0c;应用程序接口&#xff09;是一些预先定义的函数&#xff0c;或指软件系统不同组成部分衔接的约定。目的是提供应用程序与开发人员基于某软…