一、capability 含义
- 
capability功能
- 配置appium会话,告诉appium服务器需要自动化的平台的应用程序
 
 - 
capability的形式
- 键值对的集合,键对应设置的名称,值对应设置的值
 
 - 
主要分为三部分
- 公共部分
 - ios部分
 - Android部分
 
 - 
session
- appium的客户端和服务端之间的通信的前提
 - 通过desired capability建立会话
 
 
二、capability 参数介绍
2.1、公共部分参数配置
| 键 | 描述 | 值 | 
|---|---|---|
| platformNaame | 使用的手机操作系统 | iOS,Android,或者FirefoxOS | 
| platformVersion | 手机的操作系统版本 | 例如7.14.4.1 | 
| deviceName | 设备名称 | 
iPhone Simulator , iPad Simulator , iPhone Retina 4-inch , Android Emulator , Galaxy S4 , 等等…. 在 iOS 上,使用 Instruments的 instruments -s devices 命令可返回一个有效的设备的列表。在 Andorid 上虽然这个参数目前已被忽略,但仍然需要添加上该参数 | 
| automationName | 使用哪个自动化引擎 | Android默认automator2,ISO默认XCUTest | 
| noReset | 在当前session下不会重置应用的状态,默认值为false | true、false | 
| uuid | 连接设备的唯一设备编号(unique device identifier) | 例如4646546 | 
2.2、Android部分参数配置
| 键 | 描述 | 值 | 
|---|---|---|
| appActivity | activity的名字是指从安装包中所要启动的Android activity。通常需要在前面添加,(例如使用.MainActivity代替MainActivity) | MainActivity,.Settings | 
| appPackage | 运行Android的应用的包名 | com.android.settings | 
| appWaitActivity | 用于等待启动的Andriod Activity名称 | SplashActivity | 
| unicodeKeyboard | 启用unicode输入,默认false | true、false | 
| resetKeyboard | true、false | |
| dontStopAppOnReset | 首次启动时不停止app | true、false | 
| skipDeviceInitialization | 跳过安装、权限设置等操作 | true、false | 
2.3、iOS 独有
| 键 | 描述 | 值 | 
|---|---|---|
bundleId | 
被测应用的 bundle ID 。用于在真实设备中启动测试,也用于使用其他需要 bundle ID 的关键字启动测试。在使用 bundle ID 在真实设备上执行测试时,你可以不提供 app 关键字,但你必须提供 udid 。 | 
例如 io.appium.TestApp
 | 
autoAcceptAlerts | 
当 iOS 的个人信息访问警告 (如 位置、联系人、图片) 出现时,自动选择接受( Accept )。默认值 false | true 或者 false | 
showIOSLog | 
是否在 appium 日志中显示从设备捕获的任何日志。默认 false | true or false | 
2.4、Desire capability 参数示例
- API Demo 启动页配置
 
{
  "platformName": "android",
  "deviceName": "emulator-5554",
  "appPackage": "io.appium.android.apis",
  "appActivity": ".ApiDemos"
}
2.5、配置优化
- 添加参数,提高用例的稳定性
 
{
  "noReset": "true", // 不清空缓存信息
  "dontStopAppOnReset": "true", // 首次启动的时候,不停止app
  "skipDeviceInitialization": "true", // 跳过安装,权限设置等操作
  "unicodeKeyBoard": "true" // 输入中文
}