目录
前言:
Appium 是一个开源的自动化测试框架,用于移动应用程序的自动化测试。通常情况下,Appium 在执行测试用例之前需要启动应用程序。但是,在某些情况下,测试人员可能希望在不启动应用程序的情况下执行测试用例。
测试脚本初始化 session 过程简单解析
考虑到这部分不是最重点的部分,因此用文字说明,方便大家理解。
此处的初始化 session 指脚本中 webdriver.Remote('http://localhost:4723/wd/hub,desired_caps')
这个初始化 driver 的语句。
- appium server 接收到来自 client 的启动 session 的请求(/wd/hub/session)
- appium server 通过解析请求信息,得到 platform,app,activity 等关键信息
- 判断目前是否已存在 session 以及 Override session 是否为 true 。如果不存在 session 或 override session 为 true ,继续执行。
- appium server 根据解析得到的数据,执行下面一系列操作
- 根据用户的 full reset 和 no rest 参数值确定是否需要卸载应用。默认使用 fast reset
- 根据 platform 类型获取对应的 configurate 来检查该平台对应模块是否有效。这也是为何直接在 github 上下载 zip 代码文件会跑不起来的原因。如果出错,会报
Trying to run a session for device 'android' but that device hasn't been configured. Run config
错误。 - 建立 device 实例。一个 device 实例对应一个特定平台(1.4.0 上有 iOS ,safari,android,chrome,Selendroid, firefoxOS 共 6 个平台)
- 调用 device 实例的 configure 方法进行完整的初始化 session 步骤。接下来的部分以 device 类型为 android 作为例子。
- 检查 java
- 初始化 appium-adb 模块(它会自己去根据环境变量找到 adb )
- 解析 apk 的 mainfest 获取 package 名称和 launch activity
- 初始化 uiautomator 模块
- 检查设备连接。如果是模拟器就会启动模拟器并等待直到模拟器启动完毕。
- 检查 api level 。如果 api level 低于 17 则提示不支持。
- 根据 apk 信息 push string.json 。目前没研究到这个动作有什么用处
- 根据 mainfest 获取 app 启动使用的 process
- 卸载应用(前提是 full rest 为 true)
- 安装被测应用
- 绑定 bootstrap 端口
- push bootstrap 脚本(一个特殊的 uiautomator 脚本,可以接收特定端口的命令并执行对应操作)
- 安装并配置 unic