简单改造 appium ,实现 Android 平台不启动应用直接执行用例

本文介绍了如何改造Appium,以在不启动应用程序的情况下执行Android平台的测试用例。通过解析初始化session过程,发现安装/启动应用与uiautomator操作耦合度低,可以注释相关代码实现目标。改造后,session建立仍能控制手机界面进行大部分操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

前言:

测试脚本初始化 session 过程简单解析

动手改造

Demo


前言:

Appium 是一个开源的自动化测试框架,用于移动应用程序的自动化测试。通常情况下,Appium 在执行测试用例之前需要启动应用程序。但是,在某些情况下,测试人员可能希望在不启动应用程序的情况下执行测试用例。

测试脚本初始化 session 过程简单解析

考虑到这部分不是最重点的部分,因此用文字说明,方便大家理解。

此处的初始化 session 指脚本中 webdriver.Remote('http://localhost:4723/wd/hub,desired_caps') 这个初始化 driver 的语句。

  1. appium server 接收到来自 client 的启动 session 的请求(/wd/hub/session)
  2. appium server 通过解析请求信息,得到 platform,app,activity 等关键信息
  3. 判断目前是否已存在 session 以及 Override session 是否为 true 。如果不存在 session 或 override session 为 true ,继续执行。
  4. appium server 根据解析得到的数据,执行下面一系列操作
    1. 根据用户的 full reset 和 no rest 参数值确定是否需要卸载应用。默认使用 fast reset
    2. 根据 platform 类型获取对应的 configurate 来检查该平台对应模块是否有效。这也是为何直接在 github 上下载 zip 代码文件会跑不起来的原因。如果出错,会报 Trying to run a session for device 'android' but that device hasn't been configured. Run config 错误。
    3. 建立 device 实例。一个 device 实例对应一个特定平台(1.4.0 上有 iOS ,safari,android,chrome,Selendroid, firefoxOS 共 6 个平台)
    4. 调用 device 实例的 configure 方法进行完整的初始化 session 步骤。接下来的部分以 device 类型为 android 作为例子。
      1. 检查 java
      2. 初始化 appium-adb 模块(它会自己去根据环境变量找到 adb )
      3. 解析 apk 的 mainfest 获取 package 名称和 launch activity
      4. 初始化 uiautomator 模块
      5. 检查设备连接。如果是模拟器就会启动模拟器并等待直到模拟器启动完毕。
      6. 检查 api level 。如果 api level 低于 17 则提示不支持。
      7. 根据 apk 信息 push string.json 。目前没研究到这个动作有什么用处
      8. 根据 mainfest 获取 app 启动使用的 process
      9. 卸载应用(前提是 full rest 为 true)
      10. 安装被测应用
      11. 绑定 bootstrap 端口
      12. push bootstrap 脚本(一个特殊的 uiautomator 脚本,可以接收特定端口的命令并执行对应操作)
      13. <
陈思林 女26岁本科  3年经验 18473262879 [email protected] 教育经历 2017.09 - 2021.06  工作经验 湘潭大学本科 数学与应用数学 2021.08 - 2025.04  项目经历 测试开发工程师 极亿数智科技有限公司 项目一:金融风控决策引擎(2021.10 - 2022.12) 业务背景:日均处理10万+信贷申请的规则决策系统 技术栈:SpringBoot+Oracle+规则引擎 职责与成果: 1. 复杂业务测试 ● 运用判定表设计300+风控规则组合用 ● 通过Fiddler重放+日志分析定位异步处理超缺陷 2. 效能提升 ● 维护Pytest自动化框架覆盖审批全链路 ● 实现Allure报告缺陷聚合分析,定位效率提升50% 项目二:移动端 SaaS 管理平台(2022.03 - 2025.04) 业务背景:企业级多端协同SaaS系统(Web+Android/iOS App),支撑5万+日活用户 技术栈:SpringCloud+Vue+App混合开发框架 职责与成果: 1. 全链路功能测试 ● 设计跨端业务流程用:用户权限同步/数据实推送/多端操作一致性 ● 主导App兼容性测试:覆盖20+主流机型及OS版本 通过Charles抓包+SQL校验定位数据同步缺陷35+ 2. 自动化体系 搭建Pytest+Allure接口框架,核心业务覆盖率90%+ ● 开发多环境配置工具,脚本复用率提升70% ● CI集成自动化回归,版本发布周期缩短40% 3. 性能验证 ● 编写JMeter脚本模拟万人级并发操作 ● 执行登录/报表导出等场景压测,发现API网关瓶颈2处 ● 输出TPS/错误率关键指标报告  技能特长 自动化测试 Pytest+Allure|接口自动化框架|数据驱动|CI/CD集成 性能测试 JMeter脚本开发|并发场景设计|基础结果分析 移动端测试 App功能/兼容性测试|抓包(Charles)|跨端数据验证 功能测试 复杂业务用设计|SQL校验|日志分析|接口调试 开发能力 Python工具开发|Mock服务  自我评价 ● 接口自动化:主导搭建Pytest+Allure框架,2大项目核心接口覆盖率达85%+ ● 性能测试执行:熟练编写万人并发JMeter脚本,累计发现系统瓶颈8处 ● 全链路质量保障:精通跨端业务测试,擅长通过抓包/SQL/日志定位深层缺陷 ● 效能提升:自动化使回归效率提升60%。 ● 技术成长:持续研究Appium移动自动化,已实现基础脚本开发能力 这是我的简历,去模拟面试官对我提出问题,我明天就要面试了,麻烦咯
最新发布
07-10
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值