宜宾市城乡建设厅网站衡水做网站找谁
- 作者: 五速梦信息网
- 时间: 2026年04月20日 07:01
当前位置: 首页 > news >正文
宜宾市城乡建设厅网站,衡水做网站找谁,中国核工业集团2024校园招聘,邢台生活网App 自动化测试调研
App 自动化测试的价值
App 自动化测试在软件开发过程中扮演着重要的角色#xff0c;具有以下几个方面的价值#xff1a;
1.提高测试效率和覆盖率#xff1a;自动化测试可以执行大量的测试用例#xff0c;覆盖各种功能和场景#xff0c;相比手动测试…App 自动化测试调研
App 自动化测试的价值
App 自动化测试在软件开发过程中扮演着重要的角色具有以下几个方面的价值
1.提高测试效率和覆盖率自动化测试可以执行大量的测试用例覆盖各种功能和场景相比手动测试可以节省大量的时间和人力资源。自动化测试可以在短时间内运行大量测试快速发现潜在的问题和缺陷提高测试的效率和覆盖率。
2.增强测试准确性和一致性自动化测试可以消除人为的错误和测试的主观性确保测试的准确性和一致性。自动化测试脚本可以精确地模拟用户操作和测试场景避免了人为疏忽和遗漏提高了测试的可靠性。
3.加速发布周期通过自动化测试可以在应用程序开发周期的早期阶段就进行测试快速发现和修复问题。这样可以减少后期修复的成本和风险加速应用程序的发布周期提高产品交付的速度。
4.支持持续集成和持续交付自动化测试是持续集成和持续交付过程中的关键环节。通过集成自动化测试到 CI/CD 流程中可以自动化执行测试用例及时发现问题确保每次代码提交后的应用程序的质量和稳定性。
5.提高软件质量和用户体验自动化测试可以发现应用程序的潜在缺陷和问题帮助开发团队及时修复并提高软件的质量和稳定性。通过减少崩溃、功能错误和性能问题可以提升用户的满意度和体验。
6.降低成本和风险自动化测试可以降低测试过程中的人力成本和时间成本同时也减少了人为错误的风险。通过自动化测试可以在较短的时间内覆盖更多的测试用例减少人为操作的误差并提供更加可靠的测试结果从而降低了测试的成本和风险。
App 自动化测试技术选型
工具名称被测系统测试脚本语言支持 H5跨应用稳定性SDK 自带AppiumAndroid, iOS功能Java/Python/JS/C/C##/Perl支持可以一般否AirtestAndroid, iOS功能Python支持可以稳定否MacacaAndroid, iOS功能Java/Python/JS支持可以稳定否CalabashAndroid, iOS功能Ruby支持可以一般否Uiautomator2Android功能Java支持可以稳定是RobotiumAndroid功能Java支持可以稳定否ATXAndroid功能Python一般可以一般否UiautomationiOS功能JS支持可以稳定XCode 自带XCUITestiOS功能Swift/Objective-C支持可以稳定是WDAiOS功能Swift/Objective-C支持可以稳定否
主流自动化测试框架介绍
AirtestProject简介
Airtest Project是一款由网易研发并开源的自动化测试框架相比于其他的自动化测试框架主要有如下两个优势
大幅度降低自动化脚本的编写和维护成本 Airtest Project希望能够通过一种所见即所得的方式完成脚本的录制即使测试人员不会编程不懂脚本也可以通过正常用户的点击拖拽等操作自动完成脚本的录制从而大幅度降低企业和项目的自动化维护成本。 解决游戏测试的痛点 Airtest Project希望能够通过对游戏的不同引擎做支持成为一个真正意义上的跨引擎跨平台的自动化测试平台。 特点
跨平台Windows、AndroidiOSUnity3D、cocos2dx、UE4和Egret等一体化方案AirtestIDE 一个IDE搞定所有配置环境可基于图像识别也可基于UI控件识别支持自动录制生成自动化测试脚本使用方便简单易上手
架构图
可以看到底层的主要测试框架主要是Airtest和Poco二者的区别在于: Airtest基于Python的、跨平台的UI自动化测试框架基于图像识别原理适用于游戏和App。 Poco基于UI控件搜索的自动化测试框架其核心优势是除了对Android、IOS之外对游戏也是支持的同时也支持微信小程序、微信小游戏和H5应用。 整套框架配备了非常实用的IDE通过AirtestIDE, 可以轻松的完成脚本的录制、测试任务的执行以及最后测试报告的生成。
Appium 简介
Appium是一款开源的自动化测试工具支持IOS、Android、Windows和Mac应用。
跨平台: appium可以在OSXWindows以及Linux桌面上运行。
跨语言: appium采用了C/S的设计模式扩展了WebDriver协议因此Client用Python、Java、Js/Nodejs、Ruby、OC、C#等各种语言来实现。
原理介绍: Appium的核心是一个遵守REST设计风格的Web服务器他会用来接受客户端的连接和指令。由于统一的接口设计客户端便可以用多种语言来实现从而用自己喜欢的语言来实现测试用例。
服务端收到测试指令后会发送给设备在设备层则使用了设备商提供的原生测试框架比如IOS的XCUITest Driver和UIAutomation Driver, 安卓的UIAutomator和UIAutomator2等等。
特点:
跨语言Java、Python、NodeJS 等。跨平台Android、iOS、Windows、Mac支持自动录制生成自动化测试脚本配置环境复杂上手有难度
架构图 Appium官网 http://appium.io/ Appium Github主页 https://github.com/appium/appium AirtestProject项目简介
AirtestProject是由网易游戏推出的UI自动化测试解决方案项目构成如下
1.Airtest框架
Airtest 是一个跨平台的、 基于图像识别 的UI自动化测试框架适用于游戏和App支持平台有Windows、Android和iOS Airtest源码 Airtest API文档
2.Poco框架
Poco 是一款 基于UI控件识别 的自动化测试框架目前支持Android原生、iOS原生、Unity3D、cocos2dx、UE4和Egret等平台也可以在其他引擎中自行接入poco-sdk来使用。
Poco 源码 Poco API文档
3.AirtestIDE
AirtestIDE 是一款跨平台的 UI自动化测试编辑器 内置了Airtest和Poco的相关插件功能能够使用它快速简单地编写 Airtest 和 Poco 代码。
官方下载网址 AirtestIDE使用文档
4.手机集群解决方案-DeviceFarm
DeviceFarm 是网易推出的自动化测试集群解决方案它是软硬件一体化方案包含设备集群建设、集群设备批量维护管理、监控报警和云端真机等功能可以为您在企业内部搭建稳定高效的设备管理平台, 提升设备利用率赋能自动化测试流程搭建
DeviceFarm集群解决方案
5.Airlab云测试平台
Airlab云测试平台支持用例管理、脚本管理、任务预约、任务调度、云端报告等功能可以快速构建企业自动化测试全流程支持ios和安卓的回归测试及兼容测试。
Airlab云测试平台
AirtestPoco快速上手
1.简介
AirtestIDE 是一个跨平台的UI自动化测试编辑器适用于游戏和App。
自动化脚本录制、一键回放、报告查看轻而易举实现自动化测试流程支持基于图像识别的Airtest框架适用于所有Android/iOS/Windows应用支持基于UI控件搜索的Poco框架适用于Unity3dCocos2d与Android/iOS App等多种平台能够运行在Windows、MacOS、Linux平台上
2.安装
目前AirtestIDE提供了Windows、Mac和Linux的客户端请从官网下载解压即用。关于Linux平台只有1.2.3及更低版本的AirtestIDE支持所以我们 更建议在Windows和Mac平台上使用我们的AirtestIDE 。
3.连接设备
AirtestIDE目前支持测试Android/Windows/iOS上的应用其他更多平台的支持正在开发中。 无论是Android/iOS手机还是Windows窗口在Airtest中都将它视为一个设备接下来我们将演示如何连接一个设备。
1连接Android手机
通过ADB连接你的电脑和Android手机即可开始调试Android应用。ADB是Google官方提供的Android调试工具。AirtestIDE依赖ADB与安卓设备进行通信。
打开AirtestIDE按照以下步骤进行连接
打开手机设置-开发者选项-USB调试开关参考安卓官方文档在AirtestIDE设备面板中点击refresh ADB按钮查看连接上的设备如果没有显示出设备试试restart ADB如果还不行参考FAQ文档进行问题排查能够成功看到设备后点击对应设备的Connect按钮进行初始化 手机连接成功后即可在AirtestIDE中看到手机屏幕的镜像显示并对手机画面进行实时操作 如果手机连接失败请先参考FAQ文档进行问题排查。若依然不成功请将手机型号和AirtestIDE后台报错提交到Github Issue开发人员会尽快修复。由于Android手机的碎片化问题严重我们非常感谢您的反馈可以帮助这个项目做的更好。 2连接Windows窗口
对于Windows桌面程序的测试AirtestIDE可以将被测窗口嵌入方便脚本录制和调试。
在AirtestIDE设备面板中点击选择游戏画面按钮将鼠标移动到被测程序的窗口上会显示红色边框将对应的窗口框出单击鼠标左键即可将对应的窗口嵌入到AirtestIDE中也可以点击搜索窗口 按钮选择对应title的窗口然后点击连接 3连接iOS手机
要连接一台iOS手机你需要先准备好一台安装了Xcode的Mac电脑连接方法参考文档。 4. 录制自动化脚本
在连上设备后我们可以开始录制自动化测试脚本了在接下来的内容中我们将会使用一台Android设备上的一款Unity游戏应用给大家演示如何录制脚本。
1模拟输入
让我们先从最常用的模拟点击开始吧模拟点击的意思就是模仿你的操作去点击设备上的某个指定位置。
① 基于图像识别
目前我们支持通过图像识别的方式找到你想要点击的位置并进行操作这是基于Airtest这个框架实现的。
我们可以先看看如何自动录制脚本点击AirtestIDE左侧的Airtest辅助窗上的 录制 按钮然后随着你在设备窗口上操作手机代码会自动生成在代码窗口中。 马上来验证一下点击运行按钮运行你的第一个自动化脚本吧
如果你觉得自动录制生成的图标不够精确还可以点击Airtest辅助窗上的touch按钮然后在设备窗口上框选精确的图标也可以自动生成一条touch语句。
类似的模拟输入操作还有滑动点击swipe按钮在设备窗口上框选精确的图标作为滑动起点然后点击滑动终点位置即会自动生成一个swipe语句。
其他模拟输入的API包括
text文字输入keyevent按键输入包括(HOME/BACK/MENU等)sleep等待snapshot截屏
② 基于UI控件
如果你发现图像识别不够精确还可以使用基于UI控件搜索的方式进行自动化测试与刚才的Airtest不同这是Poco这个框架实现的功能。
目前Poco直接支持Unity3d、Cocos2d、白鹭引擎等多种游戏引擎以及Android/iOS原生App。
如果是Android/iOS原生应用是即插即用的无需接入SDK。但由于游戏引擎使用OpenGL等图形接口直接渲染而没有使用Android原生的UI系统我们需要与游戏的Runtime进行通信获取整个UI结构。
我们提供了非常方便的SDK接入方法点这里查阅目前支持的平台列表以及如何为你的项目接入Poco。
如果你的项目使用的引擎或平台不在文档中我们同样支持自行扩展SDK。
接入完成后我们即可开始。手机启动游戏在AirtestIDE中的 Poco辅助窗切换模式至对应引擎类型 即可看到整个UI结构。 点击录制按钮然后随着你的鼠标操作会自动生成Poco语句到脚本编辑框中。 同样你也可以通过UI树形结构更精确的检视UI控件双击节点自动生成Poco语句或者自行选择更好的写法。
自动录制出的语句不一定能够适应所有场景采用更合理的选择器编写代码通常会增强整个自动化脚本的健壮性和可读性这是门学问。 录制完脚本后记得运行试试效果。
对于Android/iOS的原生应用来说不需要接入SDK即可使用例如在连上Android手机后将Poco辅助窗的模式切换至Android能可以看到整个UI树形结构。
2框架信息
上述两种UI识别方式分别是基于两个框架
基于图像识别的Airtest框架 基于UI控件搜索的Poco框架 这两个框架都是由我们团队开发的Python第三方库在实际项目使用经验中我们发现两者 互相配合 会得到最好的效果。在脚本编写的过程中我们往往也需要查阅它们的项目API文档。
3使用Python语法
整个AirtestIDE中录制和运行的代码都是基于Python语言。Python语法简洁而强大第三库和工具也非常多。
对于新手Python上手非常容易学会基本语法即可写出自动化脚本中所需的逻辑语句。
touch(开卡包.png)
if exists(奖励面板.png):for i in range(5):Poco(奖励-%s % i).click()
对于老手你可以在AirtestIDE中使用各种第三方库来使你的自动化脚本更加强大通过添加PYTHONPATH设置可以使用本地的python.exe来运行你的脚本。
除了辅助窗口里面提供的语句更多的API文档可以查看Airtest和Poco的仓库。
4断言
到这里我们已经有各种模拟输入方法配合逻辑控制语句让手机动起来。自动化测试中还有很重要的一个步骤结果验证那么我们来看看怎样声明断言。
① 验证UI界面
录制方法与模拟输入类似
assert_exists断言图片存在assert_not_exists断言图片不存在
② 验证数值
通过Poco获取属性值手写代码进行断言
assert_equal断言相等assert_not_equal断言不等
例如
… 模拟输入并获得20分之后value Poco(分数按钮).attr(num)
assert_equal(value, 20, 获到20分)
查看测试报告 脚本运行完毕后点击查看报告按钮快捷键CtrlL会使用默认浏览器打开结果报告页面最好使用chrome浏览器打开兼容性最好。报告中将展示出每一个步骤的内容和实际执行过程的截图、运行结果方便查看步骤是否执行成功。 6.命令行接口 在AirtestIDE运行脚本时LOG窗口中会打印运行命令。
你可以在不开启IDE的情况下在命令行中使用那条命令来启动测试脚本例如 D:\AirtestIDE\AirtestIDE runner D:\AirtestIDE_2018-01-24_83\untitled.air –device Android://127.0.0.1:5037/F8UDU16409004135 –log C:\Users\gzliuxin\AppData\Local\Temp\AirtestIDE\scripts\cdfc40e8c297b6ad88e09de64d8bafa3 使用AirtestIDE你可以轻松的录制出测试脚本保存为.air脚本。请注意一个.air脚本中不要包含太多内容用良好的脚本命名和目录结构来组织你的脚本覆盖所有测试点。 你还可以在不同电脑上针对不同设备运行测试 这时候你就需要用命令行运行 .air 脚本 。 对于多平台发布的产品灵活使用跨平台API和命令行还可以让同一套测试脚本运行在Android和Windows上进行测试。 如何在Android手机上进行自动化测试 1.连接Android手机 1在AirtestIDE里连接Android手机 使用AirtestIDE对Android应用进行自动化测试时第一步就需要连接Android设备。 请查阅我们的设备连接文档里的指引安装好驱动、打开手机里的开发者选项、允许USB调试选项后用USB线连上手机并在AirtestIDE中尝试连接。 如果遇到了问题请查阅Android连接常见问题文档根据里面提供的自查步骤排查问题有些品牌手机有专属的选项需要另行开启例如小米、Vivo/Oppo请同样查阅对应品牌的注意事项来避免问题。 2设备的支持情况 目前我们支持市面上几乎绝大多数Android手机、Android模拟器模拟器连接教程请查阅这里也可能支持少部分特殊的基于Android系统的硬件设备。 在成功连上手机后我们就能够在AirtestIDE里操作手机画面就像下图中这样接下来就可以开始用这台手机编写脚本了。
3设备连接的特殊选项设置 有少数 非手机 的Android设备例如智能电视、智能后视镜等直接点击connect按钮不能连接但是可以尝试通过勾选connect下拉菜单中的选项来尝试连接。 例如我们的默认连接方式不支持模拟器因此在连接模拟器时需要先勾选Use Javacap选项部分品牌模拟器还要同时勾选Use ADB orientation。这里connect下拉菜单的三个选项是截屏、旋转和点击的三个备选方案在默认方案无法生效的时候使用这3个备选方案可能就可以支持设备了。
注意部分品牌手机不支持某个功能可能仅仅只是因为选项没有开启例如小米手机必须要开启了允许模拟点击才能够在AirtestIDE中使用默认方式点击手机速度更快效果更好。如果是正常的手机设备遇到问题时请尽量先查阅文档排查问题。这几个备选方案的效率都比默认方案低只有部分特殊的Android设备才需要使用到备选方案。 2.Android设备的连接字符串 1 运行脚本时如何指定手机 当我们在AirtestIDE里连上手机并编写完脚本当点击运行脚本按钮时默认会在运行时的命令行里使用当前已经在AirtestIDE里连接的手机我们可以在log查看窗的最上面看到像这样的1条命令 D:\demo\AirtestIDE-win-1.2.10\AirtestIDE\AirtestIDE runner D:\test\taikang_test.air –device android://127.0.0.1:5037⁄127.0.0.1:7555?cap_methodMINICAPori_methodMINICAPORItouch_methodMINITOUCH –log D:/test/test01\fe03093fd01433d6bf58dc5fa5556c22 其中–device android://127.0.0.1:5037⁄127.0.0.1:7555?cap_methodMINICAPori_methodMINICAPORItouch_methodMINITOUCH就是当前使用的本地手机它将我们这台设备号为127.0.0.1:7555的手机名称告诉Airtest让它明白我们需要使用这台手机。 我们也可以在命令行中不填写具体的手机设备号用–device Android:///这样的内容来表示在当前连接的一台Android设备上运行即可无论它的设备号是什么。 如果在命令行中完全不填写–device默认将会不连任何设备来运行代码那么在运行到需要有设备才能跑的代码时将会报错例如touch语句必须要连上设备才能运行。 如果希望在脚本中通过代码进行设备连接可以在auto_setup接口中传入devices参数或者使用connect_device接口、init_device 接口等 auto_setup(file, devices[Android://127.0.0.1:5037/SJE5T17B17],logdirTrue, project_rootrD:\test\logs, compress90)connect_device(Android:///SJE5T17B17?cap_methodjavacaptouch_methodadb)init_device(platformAndroid,uuidSJE5T17B17, cap_methodJAVACAP) 2 设备连接字符串如何编写 在刚才的命令行中使用的 –device参数传入的是一个设备字符串以安卓设备为例字串完整定义如下: Android://adbhost[localhost]:adbport[5037]/serialno 其中adbhost 是 adb server 所在主机的 ip 默认是本机 1127.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_methodJAVACAP
所有的选项都勾选上之后连接的设备用来连接多个参数字符串
Android://127.0.0.1:5037/79d03fa?cap_methodJAVACAPori_methodADBORItouch_methodADBTOUCH 更多注意事项、其他平台范例、命令行中使用了符号应该如何处理等都可以在文档关于设备字符串中找到。 3.Android设备的多机协作 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() 特别注意我们在AirtestIDE的设备连接窗口或者脚本里面连接上多台设备并不代表运行脚本时会自动在所有连接设备上面进行脚本跑测同时跑测需要自行编写多线程或多进程等来实现。举个例子我们在AirtestIDE的设备连接窗口连接上了多台Android设备点击运行脚本时只会在设备窗口当前显示的那台设备上运行。 如使用脚本连接上了多台设备则需要我们使用 set_current 接口来指定切换到哪一台设备上进行操作否则默认会在连接的第一台手机上运行。 4.Android平台专属功能与接口 在二、Airtest介绍与脚本入门-平台相关的接口一节中我们提到了每个接口支持的平台可能各不相同而Android支持的接口是最全面、最丰富的。 基本上airtest.core.api中的接口文档地址在Android平台上都可以直接使用例如
清理某个应用数据
clear_app(org.cocos2d.blackjack)
启动某个应用
start_app(org.cocos2d.blackjack)
传入某个按键响应
keyevent(BACK) 1Android设备接口 除了在airtest.core.api中提供的跨平台接口之外Android设备对象还有很多内置的接口可以调用我们可以在airtest.core.android.android module这个文档中查阅到Android设备对象拥有的方法然后像这样调用 dev device() # 获取到当前设备的Android对象 print(dev.get_display_info()) # 查看当前设备的显示信息 print(dev.list_app()) # 打印出当前安装的app列表 2 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) 5.安卓手机助手便捷功能 在使用AirtestIDE连接上Android手机时我们还提供了一个简单的手机助手功能使用方法在这里。 在连上Android手机后点击设备窗口右上角的工具图标在展开下拉菜单中选择Show assistant dialog 即可打开安卓手机助手。
在安卓手机助手中我们提供了以下几种功能 手机应用的安装/卸载/列表查看常用快捷操作打开网址、输入文本、切换输入法、音量调节等手机Shell调试窗口 6.Poco测试Android原生应用实例 1在AirtestIDE的Poco辅助窗查看Android原生控件 在AirtestIDE的Poco Assistant面板中选择Android模式之后AirtestIDE会开始自动向手机里安装Pocoservice.apk和Pocoservice-test.apk部分型号手机需要手动点击确认安装才能顺利安装。 如无法自动安装同学们也可以在IDE解压的文件夹里找到这俩个apk文件手动安装到测试设备上
安装完成后AirtestIDE会自动启动PocoService它会定时抓取 Android上界面的层次结构信息稍等片刻就可以在AirtestIDE界面中看到当前界面的UI层次结构树。 点击UI树上的任意节点可以Log面板中看到该节点的所有属性同时设备画面中将出现方框把对应位置框选出来方便定位节点。 同时Poco辅助窗还给我们提供了3个辅助功能
功能分别如下 Poco Pause锁定当前画面并检索当前画面的控件单击需要检索的控件log查看窗会出现该控件的详细信息Poco Inspector不锁定当前画面检索控件鼠标移动到哪个控件log查看窗就会显示哪个控件的详细信息并且鼠标对控件进行点击时设备画面也会实时响应Poco Auto RecordingPoco脚本自动录制功能随鼠标对控件进行点击、滑动等操作会自动在脚本编辑窗口生成对应的Poco操作脚本 如果Pocoservice启动失败会导致Pocoservice.apk反复重装此时可以检查以下几个方面 是否Android版本过低Poco支持Android SDK API ≥ 19即Android 4.4及以上请关闭PC或手机上连接的网络代理Proxy否则可能导致连不上Poco可以尝试卸载手机中的2个Pocoservice相关的APK后手工重新安装一遍在poco\poco\drivers\android\lib目录下能够找到这两个APK部分vivo和oppo手机需要将手机设置-输入法设置中把Yosemite输入法设置为默认输入法当前输入法检查手机助手内是否对 pocoservice.apk 做了限制例如在某版本的华为手机中需要开启 允许自启动 和 允许后台活动 ,部分一加手机要把 pocoservice.apk 的 电池优化 关掉详情可以参考 “Android连接常见问题” 的文档不能和uiautomator同时启动否则会相互冲突可以尝试 重启手机 看看是否会恢复 2一个使用计算器的例子 在这里我们提供一个使用Poco对一个计算器应用编写代码的例子点这里下载示例App(calculator)并事先将此App安装到手机上。 按照刚才说的在AirtestIDE中的Poco辅助窗下拉菜单中选择Android后AirtestIDE将会自动启动Pocoservice显示出当前的UI控件层次结构树。此后就可以在AirtestIDE中进行Poco语句的编写和录制了。 3代码示例 下面这段代码例子将演示一个简单的功能点击calculator的界面实现一个112的运算验证。-- encodingutf8 --
author AirtestProjectfrom airtest.core.api import *auto_setup(file)from poco.drivers.android.uiautomation import AndroidUiautomationPoco poco AndroidUiautomationPoco()poco(com.google.android.calculator:id/digit_1).click() poco(com.google.android.calculator:id/op_add).click() poco(com.google.android.calculator:id/digit_1).click() poco(com.google.android.calculator:id/eq).click()result poco(com.google.android.calculator:id/formula).get_text() assert_equal(result, 2, 112 ^^) 在这段代码中我们使用poco AndroidUiautomationPoco()初始化了一个poco对象然后分别选取了1 1按钮进行点击操作后使用get_text接口非常轻松地获取到了结果控件的值2并且使用Airtest的断言语句进行结果验证。 这个例子非常简单更多poco用法和例子请见poco tutorial。 7.同时连接多台手机使用Poco 在上一篇教程四、如何在Android手机上进行测试上-多机协作中我们提到了一个脚本里可以连接多台Android手机并且用set_current接口在手机之间切换 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) # 第二台手机 set_current(1) # 切到第二台手机 假如我们在连上手机后想要分别使用poco去获取控件和点击这两台不同的手机此时需要分别初始化两个poco就像这样 from airtest.core.api import connect_device from poco.drivers.android.uiautomation import AndroidUiautomationPocodev1 connect_device(Android://127.0.0.1:5037/serialno1) # 连上第一台手机 poco1 AndroidUiautomationPoco(dev1) dev2 connect_device(Android://127.0.0.1:5037/serialno2) # 第二台手机 poco2 AndroidUiautomationPoco(dev2)set_current(1) # 切到第二台手机 poco2(com.google.android.calculator:id/digit_1).click() 同理假如不使用connect_device接口连接手机而是通过直接在命令行中传入–device来自动连接手机的话不需要在代码里重复执行connect_device。此时只需要分别获取到设备对象并且使用设备对象初始化poco就可以了 from airtest.core.api import G from poco.drivers.android.uiautomation import AndroidUiautomationPocoprint(G.DEVICE_LIST) # 假设当前总共有2台手机 poco1 AndroidUiautomationPoco(G.DEVICE_LIST[0]) poco2 AndroidUiautomationPoco(G.DEVICE_LIST[1]) 如何在iOS 手机上进行自动化测试 1.前言 Airtest支持iOS自动化测试在Mac上为iOS手机部署iOS-Tagent之后就可以使用AirtestIDE连接设备像连接安卓设备一样实时投影、控制手机。 iOS测试不仅限于真机测试iOS模拟器也可以进行。Mac端上部署完成后还可以提供给同一局域网内的windows上远程连接使用。同时支持airtest图像识别和poco UI检索。
功能支持 支持AirtestIDE连接实时控制 iPhone支持基本操作如启动app、点击、滑动、输入、截图等等操作支持控件检索技术Poco和图像识别自动化脚本录制、一键回放、报告查看等基本功能支持真机或者模拟器
安装部署 1ios-Tagent支持情况 版本需求 Mac Xcode ≥ 9.3iPhone iOS ≥ 9.3在 9.3≤iOS≤10时由于基于旧版xcode SDK建议使用Xcode 版本≤10.1来启动iOS-Tagent否则会出现手机截屏不全的问题。 iOS-Tagent项目支持情况如下 ios-Tagent最低支持最高支持iPhone iOS9.313.5xcode9.312.1 对于高版本的iOS和xcode尽管我们的iOS-Tagent暂时没能支持但是我们的AirtestIDE1.2.8及以上版本即airtest1.1.8及以上版本已经支持了appium的WebDriverAgent所以有高版本iiOS测试需求的同学可以部署appium的WebDriverAgent然后使用我们的AirtestIDE或者是airtest库来连接部署好的iOS进行自动化测试。 2 部署流程 1.在Mac下载 iOS-Tagent ,使用 Xcode 启动 Test, 具体启动过程可参考 https://github.com/AirtestProject/iOS-Tagent 。当Xcode的log窗口输出下图信息的时候就意味着部署成功了。 2.启动代理在命令行下执行iproxy 8100 8100运行代理后可以在浏览器打开 http://127.0.0.1:8100/status 查看iOS设备是否能成功连接。 iproxy是usbmuxd附带的一个小工具它的作用是将设备的某个端口映射到电脑的某个端口。mac下可以通过brew安装 brew install usbmuxd。 iproxy 8100 8100 意思就是将手机的8100端口映射到电脑的8100端口上。这样我们就能通过访问电脑的8100端口来访问到手机了。 3.在 AirtestIDE 的设备窗口输入地址http://127.0.0.1:8100 或 http://x.x.x.xMAC IP:8100
点击Connect按钮即可连接iOS设备如图
2 支持Xcode中的iOS模拟器 Xcode中的iOS Simulator模拟器部署过程和真机一样但是可以省略步骤2不需要另外执行proxy。 当Xcode的log窗口看到下面内容的时候就可以直接用地址 http://x.x.x.x:8100 进行连接了也就是log里显示出来的ServerURLHere中的地址 WebDriverAgentRunner-Runner[xxx:xxx] ServerURLHere-http://x.x.x.x:8100-ServerURLHere 3 支持Windows连接iOS 我们同样能够在Windows上连接一个远程的iOS设备但是依然需要有Mac电脑与Xcode环境。首先按照上文的部署教程在Mac上启动iOS-Tagent之后不再使用iproxy启动代理而是改用 wdaproxy。因为iproxy只支持本机端口的映射而wdaproxy能够支持远程IP映射这意味着可以在第二部PC上通过访问ip的方式访问到Mac电脑上连接的iOS设备。 通过brew install openatx/tap/wdaproxy安装好wdaproxy 使用方法与iproxy一致wdaproxy 8100 8100或者不填写端口也可以默认将会使用8100 或者使用阿里开源的ios自动化测试工具–tidevice可以更便捷实现在Windows上对iOS进行自动化测试只要确保iOS设备上面已经安装好了WebDriverAgent我们就可以利用tidevice工具在Windows平台上启动该WebDriverAgent实现连接iOS。详细教程可以参看我们的公众号文章脱离Mac搞iOS自动化tidevice工具教你轻松实现 。iOS自动化测试实例 iOS 的测试和其他设备差不多支持图像识别和UI检索下面简单介绍一个iOS测试例子 连接设备点击home键截屏执行滑动操作使用poco点击app Safari使用poco点击浏览器的搜索框获取焦点在搜索框输入“airtest”在搜索页面往下滑动判断是否存在airtest官网地址 from airtest.core.api import * from poco.drivers.ios import iosPoco# 连接设备 auto_setup(file) connect_device(ios:///x.x.x.x:8100)# 初始化iOS原生poco poco iosPoco()
点击Home键
keyevent(HOME)
截屏
snapshot()
滑动操作
swipe(Template(rtpl1561985939879.png, record_pos(0.356, -0.174), resolution(750.0, 1334.0)), vector[-0.685, 0.0481])# 点击app Safari poco(Safari).click()
点击浏览器的搜索框
poco(URL).click()
输入“airtest”
text(airtest)# poco的滑动 poco(People also search for).swipe([-0.0541, -0.4206])
判断是否存在某个截图目标
exists(Template(rtpl1560844284543.png, record_pos(-0.292, 0.688), resolution(750, 1334))) 5. 常见问题 1如何在模拟器安装应用 把xx.ipa 改成xx.zip,解压得到xx.app 打开模拟器, 在终端运行 xcrun simctl install booted xx.app tips: 不可以把真机 app 包安装在iOS模拟器上真机的app是基于arm的而模拟器是运行在 X86 指令集上的强行安装会导致闪退的问题。 2如何进行iOS多机测试 目前暂未开放iOS多机测试功能敬请期待 3Api 支持状况 请注意iOS设备与Android设备有很大的不同以下通用的 Airtest 的 API 在iOS上都是支持的 - 打开应用 start_app OK - 关闭应用 stop_app OK - 截图 snapshot OK - 点击Home键 keyevent(“HOME”) : OK - 点击 touch : OK - 滑动 swipe : OK - 输入文本 text : OK - 等待 wait : OK - 存在截图目标 exists : OK - 查找并返回所有结果 find_all : OK - 断言存在 assert_exists : OK - 断言不存在 assert_not_exists : OK 但是以下API是不支持的 - 唤醒设备 wake : 暂未支持 (考虑用home方法替代) - 事件操作 keyevent : 只支持home 事件 - 清除应用数据 clear_app : 暂未支持 - 安装应用 install : 暂未支持 - 卸载应用 uninstall : 暂未支持 Appium 的基本介绍 简介 Appium 是一款开源框架拥有丰富的生态系统和强大的社区支持一直受到开发者的积极维护。作为一种灵活的跨平台测试自动化工具Appium 能够在 iOS、Android、Windows 和 Mac 设备上执行移动应用的自动化测试并且支持使用相同的 API 编写适用于多个平台的测试脚本。 Appium 与 Selenium 类似是一个跨语言的自动化框架可与任何测试框架结合使用。它支持多种编程语言包括 Java、JavaScript、PHP、Ruby、Python 和 C#使开发者能够使用其熟悉的语言编写测试脚本。
Appium 优势 Appium 的初衷即是解决移动端自动化的问题从 Appium1.0 的初期发展到如今的 Appium2.0其稳定性和扩展性也在逐步提升丰富的插件和支持多平台的特性不断改进的过程中使其从单一项目发展到强大的生态系统这些进步使得 Appium 在开源跨平台移动端自动化的领域占有很重要的地位。 Appium 能有如今的火爆程度很大程度上取决于它对多平台和多应用的适用性具体有以下几个方面的优势 1.支持的应用类型Appium 支持测试原生应用程序、混合应用程序和移动网页应用程序。无论应用程序是使用原生 API 开发的还是使用 Web 技术封装的都可以使用 Appium 进行测试。 2.跨平台和跨设备支持Appium 提供了跨平台和跨设备的支持可以在不同操作系统版本和不同设备上执行测试。这使得测试团队可以在各种环境下进行广泛的测试覆盖。 3.WebDriver 协议Appium 使用 WebDriver 协议来驱动和控制移动设备这是一种标准的 Web 自动化协议。这意味着熟悉 Web 自动化测试的开发人员可以很容易地过渡到移动应用程序的测试。 4.第三方工具和集成Appium 与许多第三方工具和框架集成例如 pytest、TestNG、JUnit、Cucumber 和 Jenkins 等。这使得开发人员可以将 Appium 集成到现有的测试和持续集成工作流程中。 不同的引擎适用于不同的应用程序类型和平台。在选择引擎时需要考虑应用程序的平台、类型和需求可以根据具体的需求和条件选择合适的引擎来执行 Appium 自动化测试。 Appium Drivers Appium 支持的多平台自动化的方法就是通过 drivers 即 Appium 引擎这是 Appium 框架的核心组件负责驱动和控制移动设备或模拟器以执行自动化脚本。Drivers 最初只是 Node.js 类Appium 对它进行了扩展称为 BaseDriver是对整个 WebDriver 协议的封装。通过优化和扩充提供了更强大的功能和更广泛的支持。这使得 Appium 能够跨多种平台实现自动化测试为移动应用的测试提供了高度灵活性和可扩展性。 Appium 主要支持的 Drivers 有以下几种 iOS 引擎 XCUITest默认引擎用于测试 iOS 原生应用程序。WebDriverAgent基于 XCUITest 的开源框架用于测试 iOS 应用程序。 Android 引擎 UiAutomator2默认引擎用于测试 Android 原生应用程序。Espresso用于测试 Android 应用程序特别适用于 UI 自动化测试。Selendroid用于测试 Android 应用程序支持旧版本的 Android 平台。 其他引擎 Chromium Driver用于测试 Chrome 浏览器。Flutter Driver用于测试 Flutter 应用程序。Windows Driver用于测试 Windows 桌面应用程序。Mac2 Driver用于测试 Mac 桌面应用程序。 Appium 生态工具 Appium 旨在支持不同的平台的 UI 自动化不仅如此它还旨在支持用不同语言编写的自动化代码。所以 Appium 有自己的一套生态其中包含了几个部分以此来实现这个目标。 Drivers必需适用于多个平台的驱动程序。Clients必需各种语言的客户端封装库用于连接 Appium Server。Plugins可选插件提供了各种方式来扩展 Appium 的功能。Related-Tools与测试没有直接关系的辅助工具Appium Inspector用来做元素定位Appium Doctor检测 Appium 环境的安装并检测常见的问题 Appium环境安装与使用 环境安装与使用 简介 下面是 Appium 服务安装及后续代码测试所需基本环境的具体安装步骤。 JDK 环境 在 Appium 中UiAutomator2 通过 Java 编写与 Android 应用程序进行交互因此需要配置 JDK 环境。可以参考安装教程贴进行安装。 Android SDK 环境 Appium 使用 Android SDK 与 Android 设备通信、管理模拟器或物理设备并执行 App 自动化测试。为了测试 Android 应用程序需要安装 Android SDK并确保在测试环境中正确配置了相应的路径和环境变量。 *Node.js 环境 **安装命令行版本的 Appium Server 需要 Node.js 环境。建议使用版本 14.17.0、16.13.0 或不小于 18.0.0。确保正确安装 Node.js 以便启动 Appium 服务。 Appium 服务 在 2.x 版本之前Appium 提供了命令行版本和图形化版本两种安装方式但在 2.x 更新后只提供了命令行版本。用户可以选择其中一种进行安装。 Appium Inspector 环境 在测试过程中使用 Appium Inspector 工具辅助元素定位。确保安装并配置 Appium Inspector以便在测试过程中准确定位 App 的元素。 Appium 客户端环境 根据选择的编程语言需要安装相应的 Appium 客户端库。这些库提供了与 Appium 服务器进行通信的 API 和方法以便于编写测试脚本。 移动设备平台工具 在测试过程中可以选择使用真机或模拟器。确保配置和优化所选平台的工具以便进行有效的测试。 安装步骤 以下是上述所需环境的具体安装步骤。 1.Android SDK 安装 Android SDK 方式一直接安装 SDK 直接下载 SDK 压缩包可能会有版本不兼容的问题不推荐。 网盘地址 进入网盘下载 sdk.zip SDK Manager - SDK Tools 解压好的 sdk 其实就是一个文件夹配置好环境变量就可以直接使用
方式二使用 Android Studio 安装 Android SDK 可以选择 SDK 工具的版本推荐方式。 官网下载地址网盘地址 通过官网下载 Android Studio 对应版本后直接安装安装时会进行环境的初始化使用标准安装即可。 在 AndroidStudio 欢迎界面打开 SDKmanager 在 SDK Tools 目录下安装如下进行安装
配置 Android 环境变量 Windows 配置 Android 环境 新增 ANDROID_HOME 系统变量变量名ANDROID_HOME变量值D:\adt-bundle-mac-x86.64-20140702\sdkSDK 安装的根目录 修改 Path 变量%ANDROID_HOME%\emulator%ANDROID_HOME%\platform-tools%ANDROID_HOME%\tools%ANDROID_HOME%\tools\bin MacOS 配置 Android 环境 修改 .bash_profile.bash_profile# Setting PATH for ANDROID_HOME
export ANDROID_HOME/Users/mac/Library/Android/sdk export PATH\(ANDROID_HOME/emulator:\)PATH export PATH\(ANDROID_HOME/platform-tools:\)PATH export PATH\(ANDROID_HOME/tools:\)PATH export PATH\(ANDROID_HOME/tools/bin:\)PATH export PATH\(ANDROID_HOME/build-tools/29.0.1:\)PATH Android 环境验证 进入命令行输入 adb –version输出版本号信息即成功 2.Node.js 安装 官网下载地址网盘地址安装过程中在如下图的界面需要选择 Add to PATH 选项点击选项蓝色高亮选中会自动配置环境变量。
环境验证 命令行输入以下两条命令成功出现如图所示的版本号即为安装成功。 node -v npm -v 3.Appium 服务端 Appium 服务端有 GUI 版本也有命令行版本。目前 GUI 版本官方已经停止更新对应的是 Appium 1.x 版本的服务端。 Appium 命令行版本的服务端目前官方已经更新到了 2.x 版本以下会以 2.x 版本为例介绍命令行版本服务端的安装方式。 无论是 GUI 版本还是命令行版本都是 Appium 服务端。使用时二选一即可。 Appium GUI 官网下载对应操作系统的安装包网盘地址安装参考贴 Appium Server Appium Server 2.x 安装 命令行输入 npm install -g appium安装后输入 appium成功启动会显示如下内容[Appium] Welcome to Appium v2.0.0 安装驱动 注意Appium Server 2.x 版本必须单独安装命令行输入appium driver install uiautomator2再次启动 appium成功安装会显示如下内容 Attempting to find and install driver uiautomator2 ✔ Installing uiautomator2 using NPM install spec appium-uiautomator2-driver Driver uiautomator22.0.5 successfully installed
automationName: UiAutomator2
platformNames: [Android] 安装 appium-doctor可选 注意可选用来验证 appium 环境命令行输入npm install -g appium-doctor安装后输入appium-doctor成功显示如下内容并且所需环境前方为 “√”即为安装成功。 Appium Server 1.x 和 2.x 的版本差异: 1.默认服务器基本路径 Appium 1 默认接受 http://localhost:4723/wd/hub 的命令仅是 Selenium1 迁移到 Selenium2 时遗留下来的约定并且不再和 Selenium 强绑定的关系。因此Appium2 的默认基本路径现在是 /。 2.单独安装驱动程序 Appium 1 所有可用的驱动程序与主 Appium 服务同时安装。 Appium 2 将驱动程序拆出 Appium 的安装这样 Appium 的服务安装会更加的轻便。用户可根据自己的需求安装相应的驱动程序。安装有两种方式 和 Appium 分开安装 appium driver install uiautomator2 appium driver install xcuitest4.12.2 和 Appium 一起安装 npm i -g appium –dirversxuitest,uiautomator2 1.驱动安装路径 2.Appium 1驱动程序与 Appium 服务器同时安装位于 /path/to/appium/node_modules 3.Appium 2在 APPIUM_HOME 环境变量定义的路径中安装此类依赖项默认路径是 ~/.appium 4.capability 需要加前缀 capabilities 之前称为 desired capabilities 和之前最大的区别是任何非标准功能都需要供应商前缀标准功能是在 WebDriver 协议中给出的。常用的有 browserName 和 platformName 等。 其它的功能名称中需要包含 供应商前缀前缀的格式是 前缀: 例如 Appium:。Appium 中的大多数 capabilities 都超出了标准的 W3C 功能例如 appium:appappium:noResetappium:deviceName图像分析功能移至插件 Appium2 的设计目标之一是将非核心功能拆离到插件中这使得 Appium Server 的安装变得更加的容易用户可根据所需要的功能选择是否下载对应的插件。Appium 各种和图像相关的功能已经移至 images 的插件中。 使用这个插件需要安装并启动时运行该插件 安装插件appium plugin install images运行插件appium –use-pluginsimages支持配置文件 Appium2 不仅支持命令行参数新版本的更新也增加了对配置文件的支持。配置文件可以是 JSON、JS 或 YAML 格式。 Appium 会从当前工作路径的根路径下搜索配置文件可以指定自定义appium –config-file /path/to/config/file 4.Appium Inspector 推荐安装 2022 年 6 月的版本。 官网下载对应操作系统的安装包网盘地址 5.Appium 客户端 python 客户端安装 pip install Appium-Python-Client 6.安装移动设备平台工具 需要根据要测试的移动设备平台如 Android 或 iOS安装相应的平台工具和驱动程序。 Android 平台安装 Android SDK并使用 Android SDK Manager 安装所需的平台版本和工具。 iOS 平台对于 iOS 设备测试需要安装 Xcode并配置所需的 iOS 模拟器或真机设备。
确保平台工具和驱动程序已正确安装并配置以便与 Appium 进行通信和控制。 Andriod 模拟器 mumu 官网https://mumu.163.com/网盘地址下载后直接安装即可使用下载成功后打开如图所示 目前模拟器呈现的界面并不是希望的手机界面通过以下设置把它调整成手机大小找到界面右上角进入设置中心 通过界面设置 选择 1280*720 就是手机屏幕的大小选择后进行保存即可保存后需要重启即可边更改为手机大小。 完成以上步骤后Appium 环境就安装好了。可以启动 Appium 服务器并使用相应的客户端库编写和执行自动化测试脚本。 Appium 原理解析 简介 Appium 的工作原理涉及到复杂的通信过程。因为 Appium 服务集成了多种技术它依赖其他服务的支持才能实现对多平台的强大兼容性。通过深入分析原理可以更好地理解和使用 Appium并为使用者提供更全面的视角从而获得更大的帮助。 原理分析 从上图可以了解到Appium 的设计主要分为三个大模块每个模块都有其清晰的职能完全符合设计模式中的单一职责这也是其可拓展性强的原因 Client 端将与 Appium 的各种交互封装为可被调用的 API 或工具如此一来使用者就可以通过 Inspector 或者 Java/Python/其他语言的 Appium 第三库对 Appium Server 进行调用。Server 端起到了信息中转的作用。启动了一个 HTTP 服务如此就可以接收Client 客户端的请求信息。除此之外会将所有的控制命令比如Adb 命令自动化的控制命令等其他命令转发到被测应用的移动端上面。移动端真正执行自动化测试的地方。 由以上的三个模块可知为了实现良好的拓展性其实 Appium 的设计相对是比较复杂的。 Appium Inspector 自动化用例录制 Appium Inspector 简介 Appium Inspector 是 Appium 的一个工具用于帮助开发人员和测试人员分析和调试移动应用程序。它提供了图形界面和交互式的功能使您能够轻松地检查应用程序的 UI 元素、获取元素属性、执行操作和生成自动化测试脚本。 Appium Inspector 的主要功能如下 1.元素定位和查看Appium Inspector 允许通过简单的点击来选择和定位应用程序中的 UI 元素。可以直接在应用程序界面上点击元素然后 Inspector 会显示元素的属性信息如 ID、类名、文本内容等。这样就可以轻松地确定元素的定位策略和属性用于后续的测试脚本编写。 2.执行操作Appium Inspector 提供了一些操作按钮可以模拟用户在应用程序上的操作。例如可以点击按钮、输入文本、滑动屏幕等。这样可以验证应用程序的交互和功能。 3.自动化脚本生成Inspector 还具有自动化脚本生成功能可以根据用户在应用程序上的操作生成相应的自动化测试脚本。这样可以快速生成测试脚本的起点然后进行进一步的定制和扩展。 4.元素搜索和筛选Inspector 提供了搜索和筛选功能可以找到特定的 UI 元素。可以使用属性值、文本内容等条件来搜索和筛选元素从而快速定位到目标元素。 总之Appium Inspector 是一个强大的工具提供了图形界面和交互式的功能帮助开发人员和测试人员在进行移动应用程序的 UI 分析、元素定位和自动化测试脚本编写时更加便捷和高效。 Appium Inspector 配置启动 测试对象 使用 appium 官方 Demo apk 进行练习。 下载 apk apk 网盘地址 配套资料下的 apk 目录。
安装 apk 拖拽到模拟器安装。进入到 apk 下载的目录执行adb install ApiDemos-debug.apk 安装 启动 Appium 服务 命令行输入appium成功启动服务后如下图
配置 Inspector 打开 Inspector填写 Desired Capablility 配置信息。
获取被测 app 信息 配置 Desired Capabilities 需要获取被测 app 的包名与启动 Activity 名。可以按照以下命令获取。 方法一 依次执行以下三条命令通过需要找的软件名称执行 monkey 命令得到具体页面的 Activity。一找到当前设备里所有的软件
adb shell pm list packages# 二根据关键词 筛选出需要找的软件的包名
mac
adb shell pm list packages | grep 软件名
windows
adb shell pm list packages | findstr 软件名
package:io.appium.settings
package:io.appium.uiautomator2.server
package:io.appium.android.apis
package:io.appium.uiautomator2.server.test# 三在指定的应用程序上执行一个 Monkecy 测试事件并输出详细的日志信息
adb shell monkey -p 包名 -vvv 1
// Allowing start of Intent { actandroid.intent.action.MAIN cat[android.intent.category.LAUNCHER] cmpio.appium.android.apis/.ApiDemos } in package io.appium.android.apis
方法二 打印并筛选 adb 的日志等待日志刷新结束重新打开需要测试的 APP即可得到 package 和 activity。
Mac
adb logcat ActivityManager:I | grep START
Windows
adb logcat ActivityManager:I | findstr START 验证 Activity 使用 adb 启动应用命令验证获取到的包名和 Activity 是否可以成功启动被测应用。 adb shell am start -W -S -n io.appium.android.apis/.ApiDemosStopping: io.appium.android.apis Starting: Intent { cmpio.appium.android.apis/.ApiDemos } Status: ok Activity: io.appium.android.apis/.ApiDemos ThisTime: 437 TotalTime: 437 WaitTime: 452 Complete 命令中的 -S 代表先停止目标应用再启动-W 代表展示启动时间信息。 可以成功启动代表包名与启动 Activity 正确无误。 配置 Remote Path 1.Remote Path/. 2.本机调试 Remote Host127.0.0.1Remote Port4723 跟 Appium Server GUI 中的配置对应分别为 IP、端口和地址其中地址默认配置 /wd/hub 即可。 IP 如果是本机就配置 127.0.0.1如果 Appium Server 和 Appium Inspector 不是同一台机器那么就需要配置 Appium Server 所在机器的 IPAppium Server GUI 的 HOST 也需要配置本机 IP不能配置为 0.0.0.0。 配置 Desired Capablility 初始化参数Capability是 JSON 数据类型编码的键和值当一个新的自动化会话被请求时Appium 客户端发送此参数到服务端。用来告诉 Appium 驱动程序做哪些特定的测试。通过设置参数可以传递给 Appium Server 对应的配置信息。 设置 Capablility platformName(必填)平台Android/iOSappium:automationName(必填)驱动uiautomator2/XCUITestappium:deviceName设备名appium:appPackage应用的包名appium:appActivity应用启动 Activity 名 以下是一个最基本的 Capablility 设置 {platformName: android,appium:automationName: uiautomator2,appium:deviceName: emulator-5554,appium:appPackage: io.appium.android.apis,appium:appActivity: io.appium.android.apis.ApiDemos } 可以一行一行添加也可以直接点击如下的 Edit Raw JSON直接修改 JSON 串。
保存 Capablility 如果要保存当前的 Desired Capabilites 配置可以点击 Save as 按钮然后在弹出的框中输入名字就可以保存成功了。 这样重启 Appium Inspector 后下次直接选择保存的配置就可以不需要重新输入配置信息。 Attach to Session 如果 Appium 已经有连接到手机的 Session 那么直接选择 Session ID加入即可不需要再进行配置。 启动 Session 配置好 Capablility 后点击 Start Session 按钮即可启动 Session进入 Inspector 页面。 Inspector 基础功能 Native App Mode原生态 APP 模式。Web/Hybrid App ModeWeb 和混合模式移动应用。Select Elements选择元素。Swipe By Coordinates通过坐标点滑动。Tap By Coordinates通过坐标点点击。Back返回按键。Refresh Source Screenshot刷新按钮同步移动端页面。Start Recording录制按钮。Search for element搜索定位表达式。Quit Session Close Inspector退出当前 Session。 首先是同步手机页面顶部的 3 个操作按钮从左到右分别是 1.Native app mode原生态 APP 模式点击此按钮定位原生态元素。 2.Web/Hybrid App modeWeb 和混合模式移动应用有 web view 时需要定位元素需要选择此按钮。 3.查看元素当想要查看某一元素时点击如下图“选择元素”按钮然后在屏幕截图中点击要查看的元素最后在最右侧区域可以看到元素的 xpath、id 等定位元素。 4.滑动坐标点击如下“滑动坐标”按钮即可在屏幕截图上进行滑动操作 5.点击坐标点击如下点击坐标点按钮即可在屏幕上进行坐标点击操作跟直接操作手机一样了。注意此功能和选择元素按钮互斥两个只能选一个。 6.回退按钮相当于手机的返回键。当我们想要查看返回上一个操作查看页面信息可以通过点击“返回”按钮。此时 Inspector 窗口和手机都会同时回到上一个操作的界面。等同于 android 手机上的返回键。 7.刷新按钮刷新按钮当我们在手机上对 APP 进行操作后Inspector 窗口的屏幕截图不会自动更新需要我们通过点击“刷新源和屏幕截图”按钮更新应用的最新页面。 8.用例录制录制按钮点击此按钮后可以进行录制。当我们想知道如何编写操作界面的代码时可以点击“录制”按钮然后对屏幕截图进行操作即可以实现操作的代码录制功能非常实用。注意的是录制时需要使手机页面变成可操作状态。 9.搜索定位表达式根据 ID 或 Xpath 定位元素检测表达式是否正确。选择一个属性 id(resource-id)、name(text)、xpath、className(class) 等。输入属性对应的值点击 Search即可搜索到界面对应元素的按钮。 10.退出 Session退出当前 Session点击后返回到 Appium Inspector 的 Start Session 页面。 元素定位与查看 同步到移动端页面后点击 Select Elements 按钮进入选择元素模式。 点击页面元素后即可查看元素源码和元素的属性信息。 查看元素信息 查看页面源码 在 App Source 界面中可以查看当前选中的元素在的源码以 XML 树的形式展示界面上的控件布局。 对于源码可以进行如下操作。 1.复制页面源码 2.下载页面源码 查看元素属性 在 Selected Element 界面中可以查看当前选中元素的详细属性信息。 做自动化测试需要定位元素就需要用到元素的这些属性信息。 对于选中的元素还可以进行操作 1.点击选择一个元素后还可以“点击”元素当您使用一个元素执行 Tap 操作时Inspector 将发送命令到 Appium它将执行它。如果操作成功左侧将生成一个新的屏幕截图您将看到应用程序的更新状态和 XML。如果不成功您看到错误消息。 2.输入文本选择一个元素后还可以“发送内容”到元素(前提它是一个输入框 EditText)。同样 Inspector 将发送命令到 Appium 执行它。 3.清空文本选择一个元素后还可以对元素“清空内容”(前提它是一个输入框 EditText)。同样 Inspector 将发送命令到 Appium 执行它。 4.复制元素属性可以将元素属性以 JSON 格式保存到粘贴板。 自动化用例录制步骤: 1.点击 Start Recording 按钮进入录制状态 2.在同步过来的界面中选择元素 3.在 Selected Elements 界面中进行操作 4.测试操作结束后点击 Pause Recording 结束录制 5.在 Recorder 界面展示录制脚本 用例录制示例 测试步骤 1.打开 API Demo 应用 2.点击 OS进入下个界面 3.点击【Morse Code】 4.输入内容【ceshiren.com】 5.返回上一个页面 6.返回上一个页面 总结 Appium Inspector 是一款有助于进行 APP 自动化测试的工具它通过可视化方式帮助用户理解应用程序的 UI 结构并简化了创建和调试自动化测试脚本的过程。 App 自动化应用控制 简介 app 自动化控制是通过自动化测试工具来模拟用户与移动应用程序进行交互以执行各种测试操作。 操作步骤 启动 启动应用主要有两种方式 1.正常启动应用。 2.在脚本中启动其他应用 正常启动应用创建一个 WebDriver 实例用于与 Appium 服务器建立连接并传递所需的启动配置Desired Capabilities。主要需要以下两个参数 url指定 Appium 服务器的 URL 地址。这通常是 Appium 服务器的主机名和端口号例如http://localhost:4723。capability一个字典对象包含了启动应用程序时的配置信息。这些配置信息可以包括设备名称、平台版本、应用程序包名、活动名称、自动化测试引擎、设备连接信息等。 通过将 URL 和 Capabilities 传递给启动方法Appium 客户端库将与 Appium 服务器建立连接并使用提供的配置信息启动相应的会话。这将创建一个可以用于与应用程序进行交互的 WebDriver 实例。 在脚本中启动其他应用可以在设备上激活给定的应用程序传入的 app_id 为指定应用的包名。 Python启动应用
appium_server_url http://localhost:4723 driver webdriver.Remote(appium_server_url,optionsUiAutomator2Options().load_capabilities(caps))# 在脚本中启动其他应用 driver.activate_app(com.xx.xx) Java // 启动应用 AndroidDriver driver new AndroidDriver(new URL(http://127.0.0.1:4723), uiAutomator2Options); 关闭 关闭指定 app关闭当前操作的 app不会关闭驱动对象。关闭驱动对象关闭当前所有的关联的 app并关闭驱动对象。 Python
关闭指定 app
driver.terminate_app(com.xx.xx)
关闭当前所有的关联的 app并关闭驱动对象
driver.quit() Java //关闭指定 app driver.terminateApp(app名称); //关闭驱动对象 driver.quit(); 完整示例 使用 appium 官方 Demo apk 进行练习apk 网盘地址。 Python class TestApiDemo:def setup_class(self):# Capability 设置定义为字典caps {}# 设置 app 安装的平台Android、iOScaps[platformName] Android# 设置 app 的包名caps[appium:appPackage] io.appium.android.apis# 设置 app 启动页caps[appium:appActivity] .ApiDemos# 不清空缓存caps[appium:noReset] True# 指定应用程序在会话结束时终止caps[appium:shouldTerminateApp] True# 初始化 driverappium_server_url http://localhost:4723self.driver webdriver.Remote(appium_server_url,optionsUiAutomator2Options(). \load_capabilities(caps))print(初始化driver)# 设置隐式等待self.driver.implicitly_wait(10)def teardown_class(self):# 停留 3 秒time.sleep(3)self.driver.activate_app(com.android.browser)print(打开浏览器)# 停留 3 秒time.sleep(3)self.driver.terminate_app(com.android.browser)print(关闭浏览器)time.sleep(3)# 关闭 driverself.driver.quit()print(关闭driver)def test_control(self):print(执行成功) Java BeforeAllpublic static void setUpClass() {UiAutomator2Options uiAutomator2Options new UiAutomator2Options()// 配置平台名称.setPlatformName(Android)// 配置驱动driver名称.setAutomationName(uiautomator2).setNoReset(true)// 配置启动app.amend(appium:appPackage, xxxx).amend(appium:appActivity, xxx).amend(appium:forceAppLaunch, true).amend(appium:shouldTerminateApp, true);//初始化try {driver new AndroidDriver(new URL(http://127.0.0.1:4723), uiAutomator2Options);driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(5));} catch (MalformedURLException e) {throw new RuntimeException(e);}}AfterAllpublic static void tearDownClass(){driver.terminateApp(app名称);driver.quit();} 总结 在 APP 测试中启动应用程序通常涉及两种情况一是初始化一个全新的应用程序实例二是打开一个已经存在的应用程序。为了实现这两种情况可以使用不同的方法即初始化 Appium driver 或者使用 activate_app 方法切换到某个应用程序的上下文。 在关闭应用程序时也存在两种情况一是完全退出应用程序二是结束应用程序的进程并不完全退出使其不再运行在前台。分别使用 quit 方法和 terminate_app 实现。
- 上一篇: 宜宾 网站建设自己视频怎么上传网站
- 下一篇: 宜宾网站建设88sou网站不备案访问
相关文章
-
宜宾 网站建设自己视频怎么上传网站
宜宾 网站建设自己视频怎么上传网站
- 技术栈
- 2026年04月20日
-
沂水做网站番禺网站建设哪里好
沂水做网站番禺网站建设哪里好
- 技术栈
- 2026年04月20日
-
沂水网站制作企业官网 源码 免费下载
沂水网站制作企业官网 源码 免费下载
- 技术栈
- 2026年04月20日
-
宜宾网站建设88sou网站不备案访问
宜宾网站建设88sou网站不备案访问
- 技术栈
- 2026年04月20日
-
宜宾长宁网站建设六安网站排名优化电话
宜宾长宁网站建设六安网站排名优化电话
- 技术栈
- 2026年04月20日
-
宜昌 公司 网站建设wordpress购物按钮代码
宜昌 公司 网站建设wordpress购物按钮代码
- 技术栈
- 2026年04月20日






