app自动化——capability参数配置解析

一、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" // 输入中文
}