Skip to content

Capability配置参数解析

capability 配置参数解析

简介

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

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

Appium 的客户端和服务端之间进行通信都必须在一个 Session 的上下文中进行。

客户端在发起通信的时候首先会发送一个叫作 “Desired Capabilities” 的 JSON 对象给服务器。服务器收到该数据后,会创建一个 session 并将 session 的 ID 返回到客户端,之后客户端可以用该 session 的 ID 发送后续的命令。

Capability 设置

W3C 标准 Capability

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

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

常用的公共 Capability

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

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

  • Browsers。
  • iOS apps。
  • Android apps。
  • React apps。
  • Unity。

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

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

Android 部分特有参数配置

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

iOS 独有

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

Desire capability 参数示例

API Demo 启动页配置

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

推荐配置优化参数

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

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

总结

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