乐于分享
好东西不私藏

Appium Desired Capability(十七)

Appium Desired Capability(十七)

一、Capability 到底是什么?(最通俗解释)

1. 定义

Desired Capability = 愿望清单 / 配置参数

它是一组键值对(key-value),作用只有一个:告诉 Appium 服务器:我要自动化什么样的设备、什么样的 APP、什么样的运行规则。

2. 核心功能

告诉 Appium 要连Android 还是 iOS

告诉 Appium 要启动哪个 APP(包名)

告诉 Appium设备编号、版本、引擎

告诉 Appium是否重置 APP、是否允许中文、是否跳过权限

建立会话(Session)的必备入口

3. 格式

desired_caps = {    "key": "value",    "key": "value"}

二、Capability 三大组成部分

1. 公共参数(Android + iOS 通用)

2. iOS 专用参数

3. Android 专用参数

三、公共参数(必须掌握)

这些参数 Android 和 iOS 都要写。
参数名
含义
示例值
platformName
操作系统名称
Android / iOS
platformVersion
系统版本
10 / 13 / 14
deviceName
设备名称(Android 可随便写)
emulator
automationName
自动化引擎
UiAutomator2 / XCUITest
noReset
不重置 APP 状态(不清缓存)
true
udid
真机唯一编号
1a2b3c4d
newCommandTimeout
命令超时时间
60

重点说明:

Android 上 deviceName 可以随便填,但必须写!

automationName 不写会自动默认,但建议写:Android=uiautomator2

noReset = true 非常重要,避免每次重启 APP

四、iOS 专用参数

参数名
含义
bundleId
iOS 应用的唯一 ID(必须)
autoAcceptAlerts
自动接受权限弹窗
showIOSLog
展示 iOS 日志
udid
真机设备 ID

五、Android 专用参数(高频、重点、实战必备)

1. 启动 APP 必备 4 个参数

参数
含义
appPackage
APP 包名
appActivity
启动页面
appWaitActivity
等待启动的页面(防止启动卡顿)

2. 提高稳定性参数

参数
含义
noReset
不清除 APP 缓存
dontStopAppOnReset
启动时不停止 APP(非常重要)
skipDeviceInitialization
跳过设备初始化(跳过安装、权限设置)
unicodeKeyboard
开启中文输入
resetKeyboard
输入完成后重置输入法

六、最标准、最完整的 Android 配置示例

1. 基础启动配置

desired_caps = {    "platformName": "Android",    "deviceName": "emulator-5554",    "appPackage": "io.appium.android.apis",    "appActivity": ".ApiDemos"}

2. 企业级稳定配置(必加!)

desired_caps = {    "platformName": "Android",    "deviceName": "emulator",    "appPackage": "io.appium.android.apis",    "appActivity": ".ApiDemos",    "automationName": "uiautomator2",    "noReset": "true",                  # 不清缓存    "dontStopAppOnReset": "true",       # 不停止APP    "skipDeviceInitialization": "true", # 跳过安装、权限    "unicodeKeyboard": "true",          # 中文输入    "resetKeyboard": "true"             # 重置键盘}

七、每个参数的详细作用(超级完整版)

1. noReset = true

不清除用户数据

不重新登录

不重置权限自动化必开!

2. dontStopAppOnReset = true

启动时不杀掉 APP 进程

直接复用当前 APP 状态大幅提高用例执行速度

3. skipDeviceInitialization = true

跳过设备安装

跳过权限设置

跳过服务器安装速度提升非常明显

4. unicodeKeyboard = true

允许输入中文、特殊字符

5. resetKeyboard = true

运行完成后恢复正常输入法

八、Capability 核心总结(最重要)

1. Capability 是 Appium 启动会话的配置文件

2. 格式是 键值对

3. 分为三类:

  • 公共参数

  • iOS 专用

  • Android 专用

4. Android 必备 4 个参数

  • platformName

  • deviceName

  • appPackage

  • appActivity

5. 提高稳定性必加 5 个参数

  • noReset

  • dontStopAppOnReset

  • skipDeviceInitialization

  • unicodeKeyboard

  • resetKeyboard

6. 自动化引擎必须是

automationName: uiautomator2

九、最终一句话总结

Desired Capability 就是告诉 Appium 要连什么设备、启动什么 APP、用什么方式运行,是所有 Appium 脚本的灵魂和入口。

相关学习资料