如何在Android手机上进行自动化测试

本文涉及的产品
阿里云百炼推荐规格 ADB PostgreSQL,4核16GB 100GB 1个月
简介: 如何在Android手机上进行自动化测试

前言



通过阅读本节教程,你将了解到以下内容:


  • 如何在脚本代码中、运行脚本时指定手机
  • 如何填写--device Android:///的内容
  • 如何便捷地在脚本中调用ADB指令或Android专属接口


连接Android手机



在AirtestIDE里连接Android手机


使用AirtestIDE对Android应用进行自动化测试时,第一步就需要连接Android设备。

请查阅我们的设备连接文档里的指引,安装好驱动、打开手机里的开发者选项允许USB调试选项后,用USB线连上手机并在AirtestIDE中尝试连接。


如果遇到了问题,请查阅Android连接常见问题文档,根据里面提供的自查步骤排查问题,有些品牌手机有专属的选项需要另行开启(例如小米、Vivo/Oppo),请同样查阅对应品牌的注意事项来避免问题。


设备的支持情况


目前我们支持市面上几乎绝大多数Android手机Android模拟器(模拟器连接教程请查阅这里),也可能支持少部分特殊的基于Android系统的硬件设备(这类设备由于种类繁多,我们无法一一进行测试和支持,如果有兼容需求请联系开发组)。


在成功连上手机后,我们就能够在AirtestIDE里操作手机画面,就像下图中这样,接下来就可以开始用这台手机编写脚本了。



设备连接的特殊选项设置


有少数非手机的Android设备(例如智能电视、智能后视镜等),直接点击connect按钮不能连接,但是可以尝试通过勾选connect下拉菜单中的选项来尝试连接。


例如,我们的默认连接方式不支持模拟器,因此在连接模拟器时,需要先勾选Use Javacap选项(部分品牌模拟器还要同时勾选Use ADB orientation)。这里connect下拉菜单的三个选项,是截屏、旋转和点击的三个备选方案,在默认方案无法生效的时候,使用这3个备选方案可能就可以支持设备了。


注意:部分品牌手机不支持某个功能,可能仅仅只是因为选项没有开启,例如小米手机必须要开启了允许模拟点击才能够在AirtestIDE中使用默认方式点击手机(速度更快,效果更好)。如果是正常的手机设备,遇到问题时请尽量先查阅文档排查问题。这几个备选方案的效率都比默认方案低,只有部分特殊的Android设备才需要使用到备选方案。


运行脚本时如何指定手机


当我们在AirtestIDE里连上手机并编写完脚本,当点击运行脚本按钮时,默认会在运行时的命令行里使用当前已经在AirtestIDE里连接的手机,就像这样:


"D:\AirtestIDE\AirtestIDE" runner "untitled.air" --device Android://127.0.0.1:5037/F8UDU16409004135 --log "D:\log"
复制代码


其中--device Android://127.0.0.1:5037/F8UDU16409004135就是当前使用的本地手机,它将我们这台设备号为F8UDU16409004135的手机名称告诉Airtest,让它明白我们需要使用这台手机。


我们也可以在命令行中不填写具体的手机设备号,用--device Android:///这样的内容来表示在当前连接的一台Android设备上运行即可,无论它的设备号是什么。


如果在命令行中,完全不填写--device,默认将会不连任何设备来运行代码,那么在运行到需要有设备才能跑的代码时将会报错(例如touch语句必须要连上设备才能运行)。


如果希望在脚本中通过代码进行设备连接,可以使用connect_device接口,或是在auto_setup接口中传入devices参数,请参考二、Airtest介绍脚本入门-如何在Python脚本中使用Airtest里的相关内容。


设备连接字符串如何编写


在刚才的命令行中使用的 --device参数,传入的是一个设备字符串,以安卓设备为例,字串完整定义如下:


Android://<adbhost[localhost]>:<adbport[5037]>/<serialno>
复制代码


其中,adbhost是adb server所在主机的ip,默认是本机127.0.0.1,adb port默认是5037,serialno是android手机的序列号。


这里提供一些常见的填写范例供大家参考:


# 什么都不填写,会默认取当前连接中的第一台手机
Android:///
# 连接本机默认端口连的一台设备号为79d03fa的手机
Android://127.0.0.1:5037/79d03fa
# 用本机的adb连接一台adb connect过的远程设备,注意10.254.60.1:5555其实是serialno
Android://127.0.0.1:5037/10.254.60.1:5555
# 模拟器等特殊设备、使用了连接参数时:
# 模拟器连接,勾选了Use javacap模式
Android://127.0.0.1:5037/127.0.0.1:7555?cap_method=JAVACAP
# 所有的选项都勾选上之后连接的设备,用&&来连接多个参数字符串
Android://127.0.0.1:5037/79d03fa?cap_method=JAVACAP&&ori_method=ADBORI&&touch_method=ADBTOUCH
复制代码


更多注意事项、其他平台范例、命令行中使用了&符号应该如何处理等,都可以在文档关于设备字符串中找到。


多机协作


Airtest支持一个脚本中连上多台手机,但是需要注意的是,并不是能够自动让这一个脚本在多台手机上跑,而是能够在脚本中使用这几台手机,实现一些类似于多机协作的效果(例如让两台手机登录同一个APP并相互“添加好友”)。


假如我们现在正在使用AirtestIDE编写脚本,已经同时连上多台手机,在运行脚本的时候AirtestIDE将会自动在命令行中添加多个--device参数,把当前连接的手机都告诉脚本,无需其他额外操作


或者也可以直接在脚本里使用多个connect_device语句,分别传入手机连接串信息即可:


from airtest.core.api import connect_device
dev1 = connect_device("Android://127.0.0.1:5037/serialno1")  # 连上第一台手机
dev2 = connect_device("Android://127.0.0.1:5037/serialno2")  # 第二台手机
复制代码


在连接多台手机后,我们能够在Airtest的全局变量G.DEVICE_LIST中看到所有当前连接中的设备,可以使用set_current接口在多台设备之间切换。


print(G.DEVICE_LIST)  # 此时设备列表为[dev1, dev2]
# 传入数字0切换当前操作的手机到第1台
set_current(0)
# 切换当前操作的手机到序列号为serialno2的手机
set_current("serialno2")
# 使用device()接口获取当前连接中的设备Android对象
current_dev = device()
复制代码


Android平台专属功能与接口



二、Airtest介绍与脚本入门-平台相关的接口一节中,我们提到了每个接口支持的平台可能各不相同,而Android支持的接口是最全面、最丰富的。


基本上airtest.core.api中的接口(文档地址),在Android平台上都可以直接使用,例如:


# 清理某个应用数据
clear_app("org.cocos2d.blackjack")
# 启动某个应用
start_app("org.cocos2d.blackjack")
# 传入某个按键响应
keyevent("BACK")
复制代码


Android设备接口


除了在airtest.core.api中提供的跨平台接口之外,Android设备对象还有很多内置的接口可以调用,我们可以在airtest.core.android.android module这个文档中查阅到Android设备对象拥有的方法,然后像这样调用:


dev = device()  # 获取到当前设备的Android对象
print(dev.get_display_info())  # 查看当前设备的显示信息
print(dev.list_app())  # 打印出当前安装的app列表
复制代码


ADB指令调用


在Android设备的测试脚本中,有时候我们需要输入一些ADB指令,如果在普通的Python脚本中想要调用ADB指令,也许需要用到subprocess等模块单独启动进程运行命令行才能实现。


但是在Airtest脚本中,调用ADB指令是非常简单的事情:


# 对当前设备执行指令 adb shell ls
print(shell("ls"))
# 对特定设备执行adb指令
dev = connect_device("Android:///device1")
dev.shell("ls")
# 切换到某台设备,执行adb指令
set_current(0)
shell("ls")
复制代码


手机助手便捷功能


在使用AirtestIDE连接Android手机时,我们还提供了一个简单的手机助手功能,使用方法在这里


连上Android手机后,点击设备窗口右上角的工具图标,在展开下拉菜单中,选择Show assistant dialog 即可打开安卓手机助手。



在安卓手机助手中,我们提供了以下几种功能:


  • 手机应用的安装/卸载/列表查看
  • 常用快捷操作:打开网址、输入文本、切换输入法、音量调节等
  • 手机Shell调试窗口
相关实践学习
AnalyticDB PostgreSQL 企业智能数据中台:一站式管理数据服务资产
企业在数据仓库之上可构建丰富的数据服务用以支持数据应用及业务场景;ADB PG推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
相关文章
|
3月前
|
Android开发 数据安全/隐私保护
安卓手机修改设备id, 安卓硬改一键新机,手机机型修改(伪装)
提供了完整的设备信息修改功能,包含设备模板配置、基础信息修改、网络信息修改、模拟器检测绕
|
3月前
|
存储 人工智能 文字识别
三款安卓手机word编辑器下载,Microsoft Word,wps office,Word手机版,手机word编辑查看阅读器,PDF转换器apk下载
WPS Office是一款功能强大的办公软件,支持文档编辑、表格处理和演示文稿制作,兼容多种格式并提供丰富的云服务。它具备低内存占用、快速运行的特点,支持跨设备同步与多人协作,内置海量模板及AI辅助功能,如智能写作和PPT自动生成。此外,还可扫描文件、编辑PDF并转换为其他格式,极大提升办公效率,适合手机用户便捷操作。
210 1
|
4月前
|
Android开发
安卓硬改一键新机工具,一键修改手机型号,串号网卡Imei、sn码【仅供学习参考】
声明部分:仅供学习参考使用,基于Xposed框架实现的设备信息伪装模块的完整代码,包含多个功能模块:
|
3月前
|
API Android开发 数据安全/隐私保护
|
4月前
|
存储 JSON API
安卓ck提取工具,可提取手机cookie插件,AUTOJS即可实现
怎么用autojs提取手机端的CK?其实autojs是支持提取ck的但是他提取的不是浏览器的CK,二十他自身浏览器环境的c
|
4月前
|
Java Android开发
安卓手机硬改工具, 设备型号修改神器, 安卓硬改一键新机
通过Java创建可执行JAR来修改安卓设备信息。核心功能包括读取系统属性
|
4月前
|
存储 Android开发
一键新机安卓无限, 免root改手机机型, 手机信息修改型号伪装
AndroidManifest.xml配置 资源文件管理 各系统服务的Hook
|
12月前
|
Java 测试技术 C#
自动化测试之美:从Selenium到Appium
【10月更文挑战第3天】在软件开发的海洋中,自动化测试如同一艘航船,引领着质量保证的方向。本文将带你领略自动化测试的魅力,从Web端的Selenium到移动端的Appium,我们将一探究竟,看看这些工具如何帮助我们高效地进行软件测试。你将了解到,自动化测试不仅仅是技术的展示,更是一种提升开发效率和产品质量的智慧选择。让我们一起启航,探索自动化测试的世界!
|
12月前
|
Web App开发 IDE 测试技术
自动化测试的利器:Selenium 框架深度解析
【10月更文挑战第2天】在软件开发的海洋中,自动化测试犹如一艘救生艇,让质量保证的过程更加高效与精准。本文将深入探索Selenium这一强大的自动化测试框架,从其架构到实际应用,带领读者领略自动化测试的魅力和力量。通过直观的示例和清晰的步骤,我们将一起学习如何利用Selenium来提升软件测试的效率和覆盖率。
|
测试技术 数据安全/隐私保护 开发者
自动化测试的奥秘:如何用Selenium和Python提升软件质量
【9月更文挑战第35天】在软件开发的海洋中,自动化测试是那艘能引领我们穿越波涛的帆船。本文将揭开自动化测试的神秘面纱,以Selenium和Python为工具,展示如何构建一个简单而强大的自动化测试框架。我们将从基础出发,逐步深入到高级应用,让读者能够理解并实现自动化测试脚本,从而提升软件的质量与可靠性。

热门文章

最新文章

  • 1
    Android实战经验之Kotlin中快速实现MVI架构
    345
  • 2
    即时通讯安全篇(一):正确地理解和使用Android端加密算法
    213
  • 3
    escrcpy:【技术党必看】Android开发,Escrcpy 让你无线投屏新体验!图形界面掌控 Android,30-120fps 超流畅!🔥
    556
  • 4
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
    854
  • 5
    Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
    315
  • 6
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    232
  • 7
    Android历史版本与APK文件结构
    739
  • 8
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    246
  • 9
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
    263
  • 10
    APP-国内主流安卓商店-应用市场-鸿蒙商店上架之必备前提·全国公安安全信息评估报告如何申请-需要安全评估报告的资料是哪些-优雅草卓伊凡全程操作
    492