【L1.第五章】 Appium Capablility 配置参数详细解析

Python+Appium+Pytest 自动化测试教程

  • [Appium Capablility 配置参数详细解析](#Appium Capablility 配置参数详细解析)
    • [1、W3C 标准 Capability解析](#1、W3C 标准 Capability解析)
    • [2、常用的公共 Capability解析](#2、常用的公共 Capability解析)
    • [3、Android 部分特有参数配置解析](#3、Android 部分特有参数配置解析)
    • [4、IOS 独有参数配置解析](#4、IOS 独有参数配置解析)
    • [5、Desire Capability 初始化参数](#5、Desire Capability 初始化参数)
    • [6、Desire Capability 推荐添加参数](#6、Desire Capability 推荐添加参数)
    • [7、Desire Capablility 完美优化参数](#7、Desire Capablility 完美优化参数)

Appium Capablility 配置参数详细解析

Capability 功能是用于启动 Appium 会话的一组参数的名称。这部分信息描述了 session 所希望具备的"功能"。

功能表示为键值对的集合,值可以是任何有效的 JSON 类型,包含其他对象。

Appium 的客户端和服务端之间进行通信都必须在一个 Session 的上下文中进行。
客户端在发起通信的时候首先会发送一个叫作 "Desired Capabilities" 的 JSON 对象给服务器。服务器收到该数据后,会创建一个 session 并将 session 的 ID 返回到客户端,之后客户端可以用该 session 的 ID 发送后续的命令。

1、W3C 标准 Capability解析

W3C WebDriver 关于平台的标准 capability 的其中一小部分如下表所示:

Capability Name 类型 描述
browerName string 要启动和自动化的浏览器的名称
browerVersion string 具体浏览器版本
platformName string 平台名称

2、常用的公共 Capability解析

Appium 在 W3C 规定的 capabilities 标准的基础上引入了其他更适配不同平台的附加功能。并且,任何非标准的 扩展 capability 都必须包含 appium: 前缀。

Appium 支持的平台,有如下几种:

  1. Browsers
  2. iOS apps
  3. Android apps
  4. React apps
  5. Unity

其中在不区分驱动程序时,常用的 Capability 有如下几种:

是否必填 描述
platformName iOS,Android,或者 Firefox0S 平台类型
appium:automationName uiautomator2、xcuitest Appium 驱动程序的名称
browserName iChrome、firefox 如果支持 Web 浏览器作为特殊情况,则浏览器的名称
appium:deviceName iPhone14、15、16 要自动化的特定设备的名称,例如 iPhone 14 (目前仅对指定 iOS 模拟器有用,因为在其他情况下,通常建议通过 appium:udid 使用特定设备 ID 能力)。
appium:platformVersion 例如 7.1, 4.4 平台的版本
appium:newCommandTimeout 120 Appium 服务器在确定客户端已离开并且会话应关闭之前应等待客户端发送命令的秒数
appium:noReset true 设置为 true 时,在当前 session 下不会重置应用的状态(默认为 false)
appium:fullReset true 设置为 true,则指示 Appium 驱动程序通过附加步骤来增强其通常的重置逻辑,以确保最大的环境再现性(默认 false )
appium:printPageSourceOnFindFailure true 如果为 true,则每当查找元素的请求失败时,都会收集页面源并将其打印到 Appium 日志(默认 false )
appium:eventTimings true 如果为 true,则指示 Appium 驱动程序收集事件计时(默认 false )
appium:shouldTerminateApp true 指定应用程序是否应在会话结束时终止。默认值为 true,除非 noReset 功能设置为 true。
appium:forceAppLaunch true 指定如果应用程序已经在会话启动时运行,是否应该强制重新启动。默认值为 true ,除非 noReset 设置为 true

3、Android 部分特有参数配置解析

描述
appium:appActivity MainActivity, .Settings Activity 的名字是指从你的包中所要启动的 Android acticity。他通常需要再前面添加. (例如 使用 .MainActivity 代替 MainActivity)
appium:appPackage com.example.android.myApp, com.android.settings 运行的 Android 应用的包名
appium:appWaitActivity SplashActivity 用于等待启动的 Android Activity 名称
appium:appWaitActivity SplashActivity 用于等待启动的 Android Activity 名称
appium:unicodeKeyboard True or False 启用 Unicode 输入,默认为 false
appium:resetKeyboard True or False
appium:dontStopAppOnReset True or False 首次启动的时候,不停止 app
appium:skipDeviceInitialization True or False 跳过安装,权限设置等操作

4、IOS 独有参数配置解析

描述
appium:bundleId 例如 io.appium.TestApp 被测应用的 bundle ID 。用于在真实设备中启动测试,也用于使用其他需要 bundle ID 的关键字启动测试。在使用 bundle ID 在真实设备上执行测试时,你可以不提供 app 关键字,但你必须提供 udid 。
appium:autoAcceptAlerts True or False 当 iOS 的个人信息访问警告 (如 位置、联系人、图片) 出现时,自动选择接受( Accept )。默认值 false
appium:showIOSLog True or False 是否在 appium 日志中显示从设备捕获的任何日志。默认 false

5、Desire Capability 初始化参数

bash 复制代码
{
  "platformName": "android",
  "deviceName": "TEST-XXX",
  "appium:appPackage": "io.appium.android.XXX",
  "appium:appActivity": ".ApiDemos"
}

6、Desire Capability 推荐添加参数

添加参数,提高用例的稳定性

bash 复制代码
{
  "appium:noReset": True, #不清空缓存信息
  "appium:dontStopAppOnReset": True, #首次启动的时候,不停止app
  "appium:skipDeviceInitialization": True,#跳过安装,权限设置等操作
  "appium:unicodeKeyBoard": True #输入中文
}

7、Desire Capablility 完美优化参数

bash 复制代码
{
  "platformName": "android",
  "deviceName": "TEST-XXX",
  "appium:appPackage": "io.appium.android.XXX",
  "appium:appActivity": ".ApiDemos",
  "appium:noReset": True, #不清空缓存信息
  "appium:dontStopAppOnReset": True, #首次启动的时候,不停止app
  "appium:skipDeviceInitialization": True,#跳过安装,权限设置等操作
  "appium:unicodeKeyBoard": True #输入中文
}

以上是一些常见的 Appium Capablility 配置参数,具体使用哪些参数取决于具体的测试需求和应用类型。配置参数的正确设置对于成功执行自动化测试非常重要,因此需要仔细分析测试需求,配置相应的参数。

相关推荐
chao_7894 分钟前
链表题解——两两交换链表中的节点【LeetCode】
数据结构·python·leetcode·链表
大霞上仙1 小时前
nonlocal 与global关键字
开发语言·python
Mark_Aussie1 小时前
Flask-SQLAlchemy使用小结
python·flask
程序员阿龙1 小时前
【精选】计算机毕业设计Python Flask海口天气数据分析可视化系统 气象数据采集处理 天气趋势图表展示 数据可视化平台源码+论文+PPT+讲解
python·flask·课程设计·数据可视化系统·天气数据分析·海口气象数据·pandas 数据处理
ZHOU_WUYI2 小时前
Flask与Celery 项目应用(shared_task使用)
后端·python·flask
且慢.5892 小时前
Python_day47
python·深度学习·计算机视觉
佩奇的技术笔记2 小时前
Python入门手册:异常处理
python
大写-凌祁2 小时前
论文阅读:HySCDG生成式数据处理流程
论文阅读·人工智能·笔记·python·机器学习
爱喝喜茶爱吃烤冷面的小黑黑3 小时前
小黑一层层削苹果皮式大模型应用探索:langchain中智能体思考和执行工具的demo
python·langchain·代理模式
Blossom.1184 小时前
使用Python和Flask构建简单的机器学习API
人工智能·python·深度学习·目标检测·机器学习·数据挖掘·flask