自动化测试-Appium-Desired Capabilities参数详解

分类

          • 定义与说明
          • General Capabilities(通用功能)
            • Update settings
          • Android Only
            • UIAutomator 1
            • UIAutomator2 Only
            • Espresso Only
          • iOS Only
            • iOS Only, using XCUITest
            • Safaridriver Only
            • Geckodriver Only
            • MacDriver Only
            • Mac2Driver Only
            • You.i Engine Only
            • WinAppDriver Only
            • Flutter driver only

定义与说明
  • Desired capabilities是编码在JSON对象中的键和值
  • 在请求新的自动化会话时由Appium客户端发送到服务器
  • 用来告诉Appium 驱动程序做哪些特定的测试
  • 可在WebDriver测试中编写脚本
  • 可在Appium服务器GUI中设置
  • 可在设置中添加项目名和值,Appium中自带JSON转换
  • 类似Jmeter、Postman、Fiddler、Web等里面的参数请求,这种请求在这里是面向iOS和Android移动端的,有兴趣的小伙伴都去了解一下
 {
     
    "platformName": "iOS",
    "platformVersion": "11.0",
    "deviceName": "iPhone 7",
    "automationName": "XCUITest",
    "app": "/path/to/my.app"
}
General Capabilities(通用功能)
Capability Name Description Values
automationName 使用哪种自动化引擎 Android:Appium(default)/UiAutomator2/Espresso/UiAutomator1;IOS:xguitest/Instruments;YouiEngine用于与您一起构建的应用程序,i Engine
platformName 使用哪个移动操作系统平台 iOS, Android, orFirefoxOS
platformVersion 移动操作系统的版本 例如:7.1, 4.4
deviceName 要使用的移动设备或模拟器的类型 iPhone Simulator, iPad Simulator, iPhone Retina 4-inch, Android Emulator, Galaxy S4,etc…在iOS上,这应该是带有“instruments-s devices”的仪器返回的有效设备之一。在Android上,这个功能目前被忽略了,尽管它仍然是必需的
app ipa file(IOS),app folder(IOS Simulator); .apk file(Android),.apks file(Android App Bundle),绝对路径的.zip file,远程http URL;注意:如果您指定appPackageappActivity启动,UiAutomator2XCUITest允许在没有app或appPackage的情况下启动会话,与 browserName不兼容,.apk filehere /abs/path/to/my.apk or http://myapp.com/app.ipa
otherApps 运行测试之前要安装的应用程序或应用程序列表(作为JSON数组);请注意,它不适用于automationNameof Espresso和 iOS真机 e.g.,"/path/to/app.apk", https://www.example.com/url/to/app.apk, ["http://appium.github.io/appium/assets/TestApp9.4.app.zip", "/path/to/app-b.app"]
browserName 要自动化的移动web浏览器的名称;如果改为自动化应用程序,则应为空字符串 iOS的“Safari”和Android的“Chrome”、“Chrome”或“Browser”
newCommandTimeout 在假定客户端退出并结束会话之前,Appium将等待来自客户端的新命令多长时间(以秒为单位) e.g. 60
language 为iOS(仅限Xguitest驱动程序)和Android设置的语言 e.g.fr
locale 要为iOS(仅限Xguitest驱动程序)和Android设置的区域设置。iOS的fr_CA格式。Android的CA格式(国家名称缩写) e.g. fr_CA, CA
udid 连接物理设备的唯一设备标识符 e.g. 1ae203187fc012g
orientation (仅限Sim/Emu)以特定方向启动 LANDSCAPE or PORTRAIT
autoWebview 直接移动到Webview上下文中。默认值false truefalse
noReset 在此会话之前不重置应用程序状态参考 true,false
fullReset 执行完全复位参考 true,false
eventTimings 启用或禁用报告各种Appium内部事件的计时(例如,每个命令的开始和结束等);默认为false;要启用,请使用true;然后,在查询当前会话时,将计时报告为events属性event,timing doce e.g.,true
enablePerformanceLogging (仅限Web和webview)启用Chromedriver(在Android上)或Safari(在iOS上)性能日志(默认为false true, false
printPageSourceOnFindFailure 查找操作失败时,打印当前页源;默认为false e.g.,true
clearSystemFiles 在会话结束时删除所有生成的文件;默认为false true, false
Update settings
Capability Description Values
settings[settingsKey] Update Appium Settings on session creation e.g., 'settings[mjpegScalingFactor]': 10, 'settings[shouldUseCompactResponses]': true
Android Only
Capability Description Values
appActivity 要从包中启动的Android活动的活动名称;这通常需要在前面加一个标记a.;(例如,MainActivity代替MainActivity);默认情况下,此功能从包清单接收(操作:android.intent.action操作.MAIN,类别:android.intent.category类别(发射器 ) MainActivity, .Settings
appPackage 要运行的Android应用程序的Java包;默认情况下,此功能从包清单(@package attribute value)接收 com.example.android.myApp, com.android.settings
appWaitActivity 活动名称,逗号分隔,用于您要等待的Android活动;默认情况下,此功能的值与appActivity的值相同;如果您的功能具有appActivityappPackage,则必须将其设置为第一个关注的应用程序活动名称,以防它与设置为appActivity的名称不同;也可以使用通配符(* SplashActivity, SplashActivity,OtherActivity, *, *.SplashActivity
appWaitPackage 您要等待的Android应用程序的Java包;默认情况下,此功能的值与appActivity的值相同 com.example.android.myApp, com.android.settings
appWaitDuration 用于等待appWaitActivity启动的超时(毫秒)(默认值为20000 30000
deviceReadyTimeout 等待设备准备就绪时超时(秒) 5
allowTestPackages 允许安装具有android:testOnly="true";默认为false true,false
androidCoverage 完全合格的仪器等级;传递给adb shell am instrument中的-w-e覆盖范围真-w com.my.Pkg/com.my.Pkg.instrumentation.MyInstrumentation
androidCoverageEndIntent 由您自己实现的广播操作,用于将覆盖率转储到文件系统中。在adb shell am广播-a中传递给-a com.example.pkg.END_EMMA
androidDeviceReadyTimeout 用于等待设备在引导后准备就绪的超时(以秒为单位) e.g., 30
androidInstallTimeout 用于等待apk安装到设备的超时(毫秒);默认为90000 e.g., 90000
androidInstallPath 安装前将在其中推送apk的设备上的目录的名称;默认为/data/local/tmp e.g. /sdcard/Downloads/
adbPort 用于连接ADB服务器的端口(默认5037 e.g.,5037
systemPort systemPort用于连接到appium-uiautomator2-server或appium espresso驱动程序的系统端口;默认值通常是8200,对于appium-uiautomator2-server,选择82008299之间的一个端口,对于appium espresso driver,选择83008399之间的8300;并行运行测试时,必须调整端口以避免冲突;参考 e.g.,8201
remoteAdbHost 可选的远程ADB服务器主机 e.g.: 192.168.0.101
androidDeviceSocket Devtools套接字名称;仅当测试的应用程序是Chromium嵌入浏览器时才需要;套接字由浏览器打开,Chromedriver作为devtools客户端连接到它 e.g., chrome_devtools_remote
avd 要启动的avd名称 e.g., api19
avdLaunchTimeout vd启动和连接到ADB的等待时间(毫秒)(默认60000 30000
avdReadyTimeout avd启动和连接到ADB的等待时间(毫秒)(默认120000 300000
avdArgs 启动avd时使用的其他仿真器参数 e.g., -netfast
useKeystore 使用自定义密钥库对apk进行签名,默认值为false true,false
keystorePath 自定义密钥库的路径,默认~/.android/调试密钥库 e.g., /path/to.keystore
keystorePassword 自定义密钥库的密码 e.g.,foo
keyAlias 密钥别名 e.g., androiddebugkey
keyPassword Password for key e.g.,foo
chromedriverExecutable webdriver可执行文件的绝对本地路径(如果ChromeMbedder提供了自己的webdriver,则应该使用它,而不是与Appium捆绑的原始chromedriver) /abs/path/to/webdriver
chromedriverArgs 应用程序运行chromedriver二进制文件时要传递给它的参数数组;默认情况下,除了Appium内部使用的参数(例如--url base--port--adb port--log path),不会添加任何CLI参数 e.g.,["--disable-gpu", "--disable-web-security"]
chromedriverExecutableDir 查找Chromedriver可执行文件的目录的绝对路径,用于自动发现兼容的Chromedriver。如果chromedriverUseSystemExecutabletrue,则忽略 /abs/path/to/chromedriver/directory
chromedriverChromeMappingFile 将Chromedriver版本映射到其支持的最低Chrome的文件的绝对路径;如果chromedriverUseSystemExecutabletrue,则忽略 /abs/path/to/mapping.json
chromedriverUseSystemExecutable 如果为true,则绕过自动ChromedriverExecutable设置,并使用Appium附带的版本;如果设置了ChromedDriverExecutable,则忽略该选项;默认为false e.g., true
autoWebviewTimeout 等待Webview上下文变为活动状态的时间量(毫秒);默认值为2000 e.g.4
chromedriverPort 启动Chromedriver的数字端口;请注意,不鼓励使用此功能,因为如果存在多个Web视图,它将导致未定义的行为;默认情况下,Appium将找到一个空闲端口 e.g. 8000
chromedriverPorts Appium用于与ChromeDriver通信的有效端口列表。此功能支持多种webview方案。此功能的形式是一个数字端口数组,其中数组项本身可以是长度为2的数组,其中第一个元素是包含范围的开始,第二个元素是结束;默认情况下,Appium将使用任何空闲端口 e.g.[8000, [9000, 9005]]
ensureWebviewsHavePages Appium是否应该用页面检测来增强其webview检测,以保证上下文列表中显示的任何webview上下文都有活动页面。如果选择了Chromedriver找不到任何页面的上下文,这可以防止出现错误;默认为false e.g. true
webviewDevtoolsPort 要支持ensureWebviewsHavePages功能,必须打开一个TCP端口,以便与被测设备上的webview进行通信。如果多个会话同时运行(以避免端口冲突),或者默认端口不适合您的系统,此功能允许覆盖默认端口9222 e.g. 9543
enableWebviewDetailsCollection 从Appium 1.18.0+开始,通过/json/versionCDP(Chrome Developer Protocol)端点收集详细的WebView信息;这有助于正确匹配支持给定WebView的Chromedriver版本;如果不启用此标志,Appium将尝试根据相应安装包的版本猜测WebView的版本(对于自定义web fails,这通常会失败);默认为false true or false
dontStopAppOnReset 在使用adb启动应用程序之前,不停止正在测试的应用程序的进程;如果测试中的应用程序是由另一个锚应用程序创建的,则将此设置为false将允许锚应用程序的进程在使用adb的测试应用程序启动期间仍然处于活动状态;换句话说,当dontstopapnreset设置为true时,我们将不在adb shell am start调用中包含-S标志;如果忽略此功能或将其设置为false,则包含-S标志;默认值false true or false
unicodeKeyboard 启用Unicode输入,默认为false true or false
resetKeyboard 使用unicodeKeyboard功能运行Unicode测试后,将键盘重置为其原始状态;如果单独使用则忽略;默认值false trueorfalse
noSign 跳过对带有调试密钥的应用程序的检查和签名,将仅适用于UiAutomator,默认为false trueor false
ignoreUnimportantViews 调用setCompressedLayoutHierarchy()uiautomator函数;此功能可以加快测试执行速度,因为可访问性命令将在忽略某些元素的情况下运行得更快;被忽略的元素将不可查找,这就是为什么此功能也被实现为可切换设置以及功能的原因;默认为false true or false
disableAndroidWatchers 禁用监视应用程序无响应和应用程序崩溃的android观察程序,这将减少android设备/仿真器上的cpu使用;此功能仅适用于UiAutomator,默认为false trueorfalse
chromeOptions 允许ChromeDriver传递chromeOptions功能;chromeOptions chromeOptions: {args: ['--disable-popup-blocking']}
recreateChromeDriverSessions 移动到非ChromeDriver webview时终止ChromeDriver会话;默认为false true or false
nativeWebScreenshot 在web环境中,使用本机(adb)方法拍摄屏幕截图,而不是代理到ChromeDriver;默认为false trueorfalse
androidScreenshotPath 设备上放置屏幕截图的目录的名称;默认为/data/local/tmp e.g./sdcard/screenshots/
autoGrantPermissions 让Appium自动确定您的应用程序需要哪些权限,并在安装时将这些权限授予应用程序;默认为false;如果noReset为真,则此功能不起作用 true or false
networkSpeed 设置网络速度模拟;指定最大网络上载和下载速度;默认为“完全” ['full','gsm', 'edge', 'hscsd', 'gprs', 'umts', 'hsdpa', 'lte', 'evdo'] Check -netspeed option more info about speed emulation for avds
gpsEnabled 在启动会话之前切换模拟器的gps位置提供程序;默认情况下,emulator将根据其配置方式启用或不启用此选项 trueorfalse
isHeadless 当设备显示不需要可见时,将此功能设置为true以运行Emulator headless;false是默认值;ISEADRESS还支持iOS,检查XUITEST特定功能 e.g., true
adbExecTimeout 用于等待adb命令执行的超时(毫秒);默认值为20000 e.g., 50000
localeScript Sets the locale script e.g., "Cyrl" (Cyrillic)
skipDeviceInitialization 跳过设备初始化,包括:安装和运行设置应用程序或设置权限;当设备已经用于自动化并且为下一个自动化做好准备时,可以用来提高启动性能;默认为false trueorfalse
chromedriverDisableBuildCheck 设置chromedriver标志--disable-build-check用于Chrome webview测试 true or false
skipUnlock 在会话创建期间跳过解锁;默认为false trueor false
unlockType 用特定的锁定模式解锁目标设备,而不是仅仅用助手应用程序唤醒设备;它具有unlockkey功能;默认为未定义;fingerprint仅适用于Android 6.0+和模拟器;unlock doc ['pin', 'password', 'pattern', 'fingerprint']
unlockKey A key pattern to unlock used byunlockType e.g.,'1111'
autoLaunch 正在自动初始化测试中的应用程序;如果为false,Appium不会安装/启动测试中的应用程序;默认为true trueor false
skipLogcatCapture 跳过以开始捕获logcat;它可能会提高性能,如网络;与日志相关的命令将不起作用;默认为false trueor false
uninstallOtherPackages 一个包、包列表或*以在安装apks进行测试之前卸载包'*'卸载所有第三方软件包,但Appium测试所需的软件包除外,例如io.appium.settings或者io.appium.uiautomator2.server,因为Appium已经包含管理它们的逻辑 e.g. “io.appium.example”, [“io.appium.example1”, “io.appium.example2”], ‘*’
disableWindowAnimation 如果该值为true,则将设备动画比例设置为零;会话完成后,Appium将动画比例恢复为原始值;默认为false true, false
remoteAppsCacheLimit 设置推送到被测设备本地存储的最大远程缓存apk数(默认值为10);在使用同一组apk时,远程缓存apk可以加快顺序测试用例的执行,因为每次需要重新安装时都不需要将apk推送到远程文件系统;将此功能设置为0以禁用缓存 e.g.0, 5, 20
buildToolsVersion 将Androidbuild-tools版本指定为与默认版本不同的版本,即使用最新版本;如果您的环境使用alpha/beta构建工具,那么使用非默认版本是很有帮助的 e.g. '28.0.3'
androidNaturalOrientation 允许正确处理横向设备的方向;如果设置为true,则基本上可以翻转肖像和风景的含义;默认为false true, false
enforceAppInstall 默认情况下,如果测试设备上已存在此应用程序的较新或相同版本,则跳过应用程序安装;将此选项设置为true将强制Appium始终独立于当前安装的应用程序版本安装当前的应用程序版本;默认为false true ,false
ignoreHiddenApiPolicyError Security exception: Permission denial并允许从Appium 1.18.0+开始继续会话创建过程;当Appium尝试放宽hidden API策略时,会发生此错误,尽管某些具有自定义固件的设备会拒绝此类请求;默认为false true,false`
mockLocationApp 设置应用程序的包标识符,该标识符自Appium 1.18.0+以来用作系统模拟位置提供程序;此功能对模拟器没有影响;如果该值设置为null或空字符串,则Appium将跳过模拟位置提供程序设置过程;默认为Appium设置包标识符(io.appium.settings.settings) e.g., null, io.appium.settings, example.your.app
logcatFormat 设置自Appium 1.18.0以来logcat消息的输出格式;此处列出了支持的格式; logcat#outputFormat默认threadtime e.g.,process
logcatFilterSpecs 为Appium 1.18.0之后的logcat消息设置输出筛选规则;logcat#filteringOutput ,Write and View Logs with Logcat e.g., ['*:W', 'MyActivity:D'] (MyActivity is a tag)
allowDelayAdb 是否在emulator启动时启用-delay adb;默认为true true, false
UIAutomator 1
Capability Description Values
intentAction 用于启动活动的意图操作(默认值android.intent.action.MAIN e.g.android.intent.action.MAIN, android.intent.action.VIEW
intentCategory 将用于启动活动的意图类别(默认值android.intent.category.LAUNCHER e.g. android.intent.category.LAUNCHER, android.intent.category.APP_CONTACTS
intentFlags 将用于启动活动的标志(默认值0x10200000 e.g. 0x10200000
optionalIntentArguments 将用于启动活动的其他intent参数 Intent arguments e.g.--esn , --ez , etc.
UIAutomator2 Only

请参阅UIAutomator2驱动程序存储库中有关其可用功能的文档

Espresso Only

请参阅Espresso驱动程序存储库中有关其可用功能的文档

iOS Only

这些功能仅在xguitest驱动程序和不推荐使用的UIAutomation驱动程序上可用

Capability Description Values
calendarFormat (仅限Sim卡)要为iOS模拟器设置的日历格式 e.g. gregorian
bundleId 正在测试的应用程序的捆绑包ID;用于在真实设备上启动应用程序,或用于在测试启动期间使用其他需要bundle ID的caps;要使用bundle ID在真实设备上运行测试,可以省略“app”功能,但必须提供“udid” e.g. io.appium.TestApp
udid 连接的物理设备的唯一设备标识符 e.g. 1ae203187fc012g
launchTimeout 在假定仪器挂起并使会话失败之前等待仪器的时间量(毫秒) e.g. 20000
locationServicesEnabled (仅限Sim卡)强制打开或关闭位置服务;默认设置为保持当前sim卡设置 true or false
locationServicesAuthorized (仅限Sim卡)通过plist将位置服务设置为对应用程序授权或未授权,以便不会弹出位置服务警报;默认设置为保持当前sim卡设置;请注意,如果使用此设置,还必须使用bundleId功能发送应用程序的bundle ID trueor false
autoAcceptAlerts 自动接受所有弹出的iOS警报;这包括隐私访问权限警报(例如,位置、联系人、照片);默认值为false trueor false
autoDismissAlerts 如果出现所有iOS警报,则自动关闭它们;这包括隐私访问权限警报(例如,位置、联系人、照片);默认值为false trueor false
nativeInstrumentsLib 使用本机仪器库(即立即禁用仪器) trueor false
nativeWebTap 在Safari中启用“真实的”,非基于javascript的web taps;默认值:false;警告:取决于视口大小/比率;这可能无法准确地点击元素 true or false
safariInitialUrl 初始safari url,默认为本地欢迎页面 e.g. https://www.github.com
safariAllowPopups (仅限Sim卡)允许javascript在Safari中打开新窗口;默认保持当前sim卡设置 true or false
safariIgnoreFraudWarning (仅限Sim卡)防止Safari显示欺诈网站警告;默认保持当前sim卡设置 trueorfalse
safariOpenLinksInBackground (仅限Sim卡)Safari是否应允许在新窗口中打开链接;默认保持当前sim卡设置 trueor false
keepKeyChains (仅限Sim卡)在appium会话启动/完成时是否保留密钥链(库/密钥链) true orfalse
localizableStringsDir 查找可本地化字符串的位置;默认en.lproj|en.lproj
processArguments 使用仪器传递给AUT的参数 e.g.,-myflag
interKeyDelay 键入时发送到元素的两次击键之间的延迟,以毫秒为单位 e.g., 100
showIOSLog Whether to show any logs captured from a device in the appium logs. Default false true or false
sendKeyStrategy 用于在测试字段中键入测试的策略;模拟器默认值:oneByOne;实际设备;默认值:grouped oneByOne, groupedor setValue
screenshotWaitTimeout 等待生成屏幕截图的最大超时时间(秒);默认值:10 e.g., 5
waitForAppScript ios自动化脚本用于确定应用程序是否已启动,默认情况下,系统将等待页面源不为空;结果必须是布尔值 e.g.true;, target.elements().length > 0;, $.delay(5000); true;
webviewConnectRetries 向远程调试器发送连接消息以获取webview的次数;默认值:8 e.g.,12
appName 正在测试的应用程序的显示名称;用于在iOS9中自动备份应用程序+ e.g., UICatalog
customSSLCert (仅限Sim卡)向IOS模拟器添加SSL证书 e.g. -----BEGIN CERTIFICATE-----MIIFWjCCBEKg...-----END CERTIFICATE-----
webkitResponseTimeout (仅限真实设备)设置在Safari会话中等待WebKit响应的时间(毫秒);默认为5000 e.g., 10000
remoteDebugProxy (仅限Sim卡,<=11.2)如果设置,Appium将通过本地端口(仅限Sim卡,<=11.2)上的代理或此unix套接字(仅限Sim卡>=11.3)上的代理发送和接收远程调试消息,而不是直接与iOS远程调试器通信 e.g. 12000or "/tmp/my.proxy.socket"
enableAsyncExecuteFromHttps 允许模拟器使用HTTPS在页面上执行异步JavaScript的功能。默认为false true orfalse
skipLogCapture 跳过以开始捕获日志,如崩溃、系统、safari控制台和safari网络;它可能会提高性能,如网络;与日志相关的命令将不起作用;默认为false true orfalse
webkitDebugProxyPort (仅限实际设备)连接端口ios-webkit-debug-proxy是连通的,调试代理连接到的端口;默认值为27753 12021
fullContextList 返回get available context命令上下文的详细信息;如果启用了这个功能,那么返回的contexts列表中的每一项都将另外包括WebView标题、完整URL和bundle标识符;默认为false true or false
iOS Only, using XCUITest

Please refer to the documentation on the XCUITest driver repository about its available capabilities.

Safaridriver Only

Please refer to the documentation on the safaridriver repository about its available capabilities.

Geckodriver Only

Please refer to the documentation on the geckodriver repository about its available capabilities.

MacDriver Only

Please refer to the documentation on the MacDriver repository about its available capabilities.

Mac2Driver Only

Please refer to the documentation on the Mac2Driver repository about its available capabilities.

You.i Engine Only

Please refer to the documentation on the You.i Engine driver repository about its available capabilities.

WinAppDriver Only

Please refer to the documentation on the Appium Windows Diver repository about its available capabilities.

Flutter driver only

Please refer to the documentation on the Flutter Diver repository about its available capabilities.

你可能感兴趣的:(Appium,Android开发,java,python,android,深度学习,网络)