Android自动化测试中操作技巧合集(建议收藏)

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

二、获取方式介绍

获取短信验证码主要有两种方式:

  1. 通过 adb shell 和 content 命令查询内容提供器,直接获取短信信息。
  2. 编写 Android 程序,通过 Android SDK 提供的 API 查询内容提供器。本文主要介绍第一种方式,即通过 adb 命令获取短信验证码。

三、命令解析

adb shell 进入adb命令行模式
content query --uri <内容URI> 查询内容提供器的内容
--projection <列名> 指定查询返回的列
--where <条件> 指定查询的条件
--sort <排序方式> 指定结果排序方式
--limit <数量> 指定返回数据的最大行数

所以,我们可以通过组合这些参数,写入 adb 命令,直接查询取得短信验证码。例如:

adb shell "content query --uri content://sms/inbox --projection body --where "address='135XXXXXXXX'"

这条命令的作用是:

  • --uri content://sms/inbox 指定查询短信内容提供器的收件箱
  • --projection body 只查询短信的 body,也就是内容列
  • --where "address='135XXXXXXXX'" 指定过滤条件,地址等于发验证码的手机号

这样我们就可以直接取得该手机号发送过来的短信验证码了。

四、实际应用

在自动化测试中,我们可能需要频繁获取短信验证码,以实现某些测试用例。例如注册账号和重置密码时,都需要验证短信验证码。每运行一遍测试用例,都需要获取新的验证码。为了简化这部分的处理,我们可以编写一个获取验证码的公共函数。利用 adb 命令查询短信内容提供器,获取到最近的一条短信,然后通过正则表达式解析出 6 位数字验证码。这样就可以实现一个通用的获取验证码组件。示例代码:

import re
import subprocess

def get_verification_code(phone_number):

  # 构建adb命令
  adb_command = f'adb shell "content query --uri content://sms/inbox --projection body --where "address=\'{phone_number}\'"'

  # 执行命令,取得输出
  output = subprocess.check_output(adb_command).decode('utf-8')

  # 解析验证码
  match = re.search(r'(\d{6})', output)
  if match:
      return match.group(1)

  return None

这样,在任意测试用例里,我们就可以直接调用该函数来获取验证码,而不需要每次都写 adb 查询的代码。

五、优化效果

  1. 将专用功能封装成函数,提高代码复用率
  2. 将 adb 命令进行参数化,使查询更通用灵活
  3. 使用正则表达式解析验证码,减少处理过程中的硬编码
  4. 分离业务代码和底层实现,降低代码耦合 以上几点优化,使得获取验证码的逻辑更清晰,也为未来可能的改造提供了方便,例如需要改用 UI 自动化工具获取时,只需要调整函数内部实现即可,外部调用方无须做任何改变。

六、注意事项

  1. 小部分 Android 系统版本需要开启 adb shellroot 权限,才能查询短信内容提供器
  2. 如果有多个发送方发送了验证码短信,需要额外加入限制,仅获取指定发送方的短信
  3. 短信内容提供器的数据以时间倒序排序,要获取最新短信可以加上限制行数的参数
  4. 短信内容可能以编码形式存储,需要检查是否需要提前做解码

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以戳这里获取

大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

需要这份系统化的资料的朋友,可以戳这里获取

  • 16
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值