简介
- 功能:配置 Appium 会话,告诉 Appium 服务器需要自动化的平台的应用程序
- 形式:键值对的集合,键对应设置的名称,值对应设置的值
主要分为三部分
- 公共部分
- ios 部分
- android 部分
- session
- Appium 的客户端和服务端之间进行通信的前提
- 通过 Desired Capabilities 建立会话
公共部分参数配置
键 | 描述 | 值 |
platformName | 使用的手机操作系统 | iOS,Android |
platformVersion | 手机操作系统的版本 | 例如6.0 |
deviceName | 使用的手机或模拟器名称 | Android (Emulator,Galaxy S4,夜神);iOS等,可以通过adb devices查看设备列表 |
automationName | 使用哪个自动化引擎 | android默认使用uiautomator2,ios默认使用XCUTest |
noReset | 不会重置应用的状态,默认为false | true,false |
udid | 连接的真实设备唯一设备编号(iOS) |
Android特有的部分
键 | 描述 |
appActivity | Activity的名字,从包中想要启动的android activity |
appPackage | 运行的android应用包名 |
appWaitActivity | 用于等待启动的Android Activity名称 |
unicodeKeyboard | 启用Unicode输入,默认为false |
dontStopAppOnReset | 首次启动的时候,不停止app |
skipDeviceInitialization | 跳过安装,权限设置等操作 |
IOS独有
键 | 描述 |
bundleId | 被测应用的bundle ID,用于在真实设备中启动测试,也用于使用其他需要bundle ID 的关键字启动测试。在使用此参数在真实的设备上执行测试时,可以不提供app关键字,当时必须提供udid |
autoAcceptAlerts | 当ios的个人信息访问警告出现时,自动接收。默认false |
showIOSLog | 是否在appium日志中显示从设备捕获的任何日志。默认false |
示例:
-
API Demo 启动页配置
{ "platformName": "android", "deviceName": "emulator-5554", "appPackage": "io.appium.android.apis", "appActivity": ".ApiDemos" }
-
添加参数,提高用例的稳定性
{ "noReset": "true", // 不清空缓存信息 "dontStopAppOnReset": "true", // 首次启动的时候,不停止app "skipDeviceInitialization": "true", // 跳过安装,权限设置等操作 "unicodeKeyBoard": "true" // 输入中文 }
newCommandTimeout
设置appium请求等待最长时间,默认为60s,是appium发送请求的最大间隔时间
udid
设备的唯一标识,是adb devices获取到的设备标识
autoGrantPermissions
为软件授予弹窗权限,打开软件后,有时候会弹出一些权限授予的弹窗,可以通过设置这个参数去授予权限,不会影响到自动化测试的执行。默认为False
注意:如果设置了noReset 等于True的话,这个capability(功能)是不工作的。
noRest
在安卓系统中,设置该参数为True的话,不停止软件,不会去清除软件的数据,不会去卸载软件。
fullReset
让app完全保持干净状态,停止app,清空app缓存,在会话开始之前和测试之后会卸载app
dontStopAppOnReset
不去重启app,由于启动app的操作,底层是通过adb命令来实现的,所以当该参数设置为True的时候,启动命令不会去加-S参数,如果为False,则会加上-S参数
原理:
adb shell am start 包名/页面名 启动app,如果app已经启动,则不会再启动
adb shell am start -S 包名/页面名 启动app,如果app已经启动,会先关掉app再启动
官方文档:https://appium.io/docs/en/writing-running-appium/caps/
relaxed-security设置为true的话,可以在代码中使用adb命令
newCommandTimeout
设置appium请求等待最长时间,默认为60s,是appium发送请求的最大间隔时间
udid
设备的唯一标识,是adb devices获取到的设备标识
autoGrantPermissions
为软件授予弹窗权限,打开软件后,有时候会弹出一些权限授予的弹窗,可以通过设置这个参数去授予权限,不会影响到自动化测试的执行。默认为False
注意:如果设置了noReset 等于True的话,这个capability(功能)是不工作的。
noRest
在安卓系统中,设置该参数为True的话,不停止软件,不会去清除软件的数据,不会去卸载软件。
fullReset
让app完全保持干净状态,停止app,清空app缓存,在会话开始之前和测试之后会卸载app
dontStopAppOnReset
不去重启app,由于启动app的操作,底层是通过adb命令来实现的,所以当该参数设置为True的时候,启动命令不会去加-S参数,如果为False,则会加上-S参数
原理:
adb shell am start 包名/页面名 启动app,如果app已经启动,则不会再启动
adb shell am start -S 包名/页面名 启动app,如果app已经启动,会先关掉app再启动
官方文档:https://appium.io/docs/en/writing-running-appium/caps/
relaxed-security设置为true的话,可以在代码中使用adb命令
原文链接:https://blog.csdn.net/weixin_55085113/article/details/126729122