Android自动化测试中短信的操作技巧!

一、发送短信的机制简介

短信作为一种重要的移动通信方式,在APP测试中也经常需要验证短信功能的正确性。为了避免大量手动操作设备发送短信的低效率,我们可以利用ADB命令达到自动发送短信的目的。

短信的发送需要手机短信APP的支持。命令行通过启动短信APP并传入参数,让APP负责发送。整个过程不需要实际操作设备。

二、发送方式介绍

自动发送短信主要有两种发送方式:

  1. startActivity方式启动短信APP

这种方式通过启动短信APP的界面,并插入电话号码、短信内容等信息,让APP发送短信。

  1. Broadcast方式发送广播

这种方式是直接发送一个系统广播,系统会根据广播信息自动发送短信,无需打开APP界面。

三、命令解析

我们来看一下具体的ADB命令:

adb shell am start -a android.intent.action.SENDTO -d sms:13800000000 -e sms_body "this is a test message" --es app com.android.messaging
  • adb shell:进入adb的shell界面,与设备terminal建立连接

  • am:Activity Manager的缩写,用于启动activities、服务、发送广播等

  • start:启动一个activity

  • -a android.intent.action.SENDTO:指明启动的action,-a参数

  • -d sms:13800000000:指明data URI,-d参数

  • -e sms_body "this is a test message":加上extra text,-e参数

  • --es app com.android.messaging:打开的APP,即短信APP的包名

  1. 现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。

  2. 如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受

  3. 可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛

  4. 分享他们的经验,还会分享很多直播讲座和技术沙龙

  5. 可以免费学习!划重点!开源的!!!

  6. qq群号:680748947

四、实际应用

  1. import os

  2. phone_list = ['13800000000', '13800000001'] 

  3. message = '这个是测试短信'

  4. for phone in phone_list:

  5.   cmd = f'adb shell am start -a android.intent.action.SENDTO -d sms:{phone} -e sms_body "{message}" --es app com.android.messaging'

  6.   os.system(cmd)

以上代码可以批量向不同号码发送相同短信。也可以传入不同消息做参数化。

五、优化效果

  • 避免手工操作,节约测试时间成本

  • 可以通过命令实现循环发送,不需要人工干预

  • 可以参数化脚本,实现批量自动发送不同短信

  • 可以将命令集成到自动化测试框架中,实现自助测试

六、注意事项

  • 目标设备需开启开发者模式和USB调试

  • 确保adb命令可用,连接未中断

  • 使用前请理解ADB的所有参数

  • 不要滥用,避免产生骚扰等问题

七、总结

ADB提供了强大的命令与参数,可以实现通过命令行自动触发短信发送的功能。充分利用这些命令,可以大大增强我们的APP测试效率和覆盖范围。

除短信外,其它很多测试场景也可以通过ADB命令实现自动化,建议结合自动化框架,构建完整的测试解决方案。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Data-Free Generalized Zero-Shot Learning 中文版

摘要 深度学习模型具有从大规模数据集中提取丰富知识的能力。然而,由于涉及到数据版权和隐私问题,数据共享变得越来越具有挑战性。因此,这妨碍了从现有数据向新的下游任务和概念有效转移知识。零样本学习(ZSL)方法旨在…

数据结构 --- 复杂度概念及计算讲解(时间复杂度,空间复杂度)

今天没有sao话,今天认真学习 一、时间复杂度 1、概念讲解 2、计算讲解 二、空间复杂度 1、概念讲解 2、计算讲解 三、常见复杂度对比 四、完结撒❀ 前言: 经常刷题的人都知道,我们在解决一道题时可能有多个解法,那么如何…

1、Java虚拟机学习-类的生命周期-加载阶段-以及怎样查看方法区中的对象和堆中对象的关联以及静态变量存在什么地方

类的生命周期 其中连接又可以分为3个小阶段 一、加载阶段 1、加载阶段第一步是类加载器根据类的全限定名通过不同的渠道以二进制流的方式获取字节码信息。 渠道: 2、类加载器在加载完类之后,Java虚拟机会将字节码中的信息保存在内存的方法区中。 方法区是虚拟…

HarmonyOS NEXT应用开发—投票动效实现案例

介绍 本示例介绍使用绘制组件中的Polygon组件配合使用显式动画以及borderRadius实现投票pk组件。 效果预览图 使用说明 加载完成后会有一个胶囊块被切割成两个等大的图形来作为投票的两个选项,中间由PK两字分隔开点击左边选项,两个图形会随着选择人数…

Http 超文本传输协议基本概念学习摘录

目录 HTTP协议 超文本传输协议 HyperText超文本 HTML超文本标记语言 HTTP协议原理 请求发送 服务器处理 响应发送 连接关闭或保持 HTTP协议版本 HTTP/0.9 HTTP/1.0 HTTP/1.1 HTTP/2 HTTP/3 HTTP请求方法 GET POST PUT DELETE HEAD OPTIONS HTTP请求头字…

MQTT学习从零到实战:二

本次基于MQTT实现的服务器之一:EMQX 协议版本:5.0 文档路径:快速开始 | EMQX 5.0 文档 MQTT协议服务器搭建 本次使用的服务器是EMQX。 下载地址:立即开始 | EMQX 从中我们也可以看出,企业版支持数据持久化&#xf…

springboot+template模板语法+SQL如何从零开始创建并运行一个实例

目录 一、创建springboot项目 二、启动程序测试一下,右上角点击运行: 三、代码编写 1、先在entity里写一个实体类,User: 2、写一个mapper接口,写四个接口,增删改查。(我这里后面就以获取所…

蓝桥杯每日一题——棋盘

问题描述 小蓝拥有 n xn 大小的棋盘,一开始棋盘上全都是白子。小蓝进行了 m 次操作,每次操作会将棋盘上某个范围内的所有棋子的颜色取反(也就是白色棋子变为黑色,黑色棋子变为白色)请输出所有操作做完后棋盘上每个棋子的颜色。输入格式 输入的…

3.14_理解专业术语_3.18

分布式电源 风能、太阳能、生物质能等新能源的应用,有很大部分是分散式的,且容量较小。这些分散布置在电力负荷附近的、容量在数千瓦至数十兆瓦之间的、为环境兼容的、节能的发电装置,如燃气轮机、内燃机、小型光伏发电站、燃料电池、风力发电…

Docker知识--01

虚拟化 # 什么是虚拟化 在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打…

【计算机网络】IP 协议

网络层IP协议 一、认识 IP 地址二、IP 协议报头格式三、网段划分1. 初识子网划分2. 理解子网划分3. 子网掩码4. 特殊的 IP 地址5. IP 地址的数量限制6. 私有 IP 地址和公网 IP 地址7. 理解全球网络(1)理解公网(2)理解私网&#xf…

C语言---指针的两个运算符:点和箭头

目录 点(.)运算符箭头(->)运算符需要注意实际例子 C语言中的指针是一种特殊的变量,它存储了一个内存地址。点(.)和箭头(->)是用于访问结构体和联合体成员的运算符。…

[LeetBook]【学习日记】排序算法——归并排序

主要思想 归并排序是一种分治算法,其排序过程包括分和治分是指将要排序的序列一分为二、二分为四,直到单个序列中只有一个数治是指在分完后,将每两个元素重新组合,四合为二、二合为一,最终完成排序 图片作者&#xf…

SkiaSharp使用SKCanvas.DrawText绘制2D文本时部分字符渲染位置异常。

Skia是一个开源的 2D 图形库,支持多种平台和语言,可以用于绘制各种图形和效果,SkiaSharp是其.Net版本。 在绘制文本时,一般做法是: private void SkContainer_PaintSurface(object? sender, SkiaSharp.Views.Deskto…

Linux系统安装宝塔面板结合内网穿透实现公网登录本地面板——“cpolar内网穿透”

文章目录 一、使用官网一键安装命令安装宝塔二、简单配置宝塔,内网穿透三、使用固定公网地址访问宝塔 宝塔面板作为建站运维工具,适合新手,简单好用。当我们在家里/公司搭建了宝塔,没有公网IP,但是想要在外也可以访问内…

Midjourney 和 Dall-E 的优劣势比较

Midjourney 和 Dall-E 的优劣势比较 Midjourney 和 Dall-E 都是强大的 AI 绘画工具,可以根据文本描述生成图像。 它们都使用深度学习模型来理解文本并将其转换为图像。 但是,它们在功能、可用性和成本方面存在一些差异。 Midjourney 优势: 可以生成更…

攻防世界新手模式例题(Web)

PHP2 首先我们查看页面,查看前端代码 发现均没有什么有效信息,由题目可知,此问题与php相关,于是我们可以看一下他的index.php文件 查看时用?index.phps 补充知识:phps文件就是php的源代码文件,通常用于…

算法之位运算

常见的位运算操作: 首先先熟悉一下常见的位运算操作: 1. 基础位运算 左移<<, 右移>>, 按位与&, 按位或|, 按位异或^, 按位取反~ 注意: 异或其实是一种无进位相加. 2. 给定一个 n, 确定它的二进制表示中第x位是 0 还是 1 n & (1<<x) 或者 (n>…

消费者组大观:5种状态,1场分布式奇迹

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 消费者组大观&#xff1a;5种状态&#xff0c;1场分布式奇迹 前言EmptyDead状态处理 Dead 状态的策略&#xff1a;防范和恢复&#xff1a; PreparingRebalance处理 "PreparingRebalance" 状…

【Leetcode-102.二叉树的层序遍历】

题目详情&#xff1a; 给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09;。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;[[3],[9,20],[15,7]]示例…