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

目录

前言:

测试脚本初始化 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. 安装并配置 unicode
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值