{
"platformName": "iOS",
"platformVersion": "11.0",
"deviceName": "iPhone 7",
"automationName": "XCUITest",
"app": "/path/to/my.app"
}
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;注意:如果您指定appPackage 和appActivity 启动,UiAutomator2 和 XCUITest 允许在没有app或appPackage 的情况下启动会话,与 browserName 不兼容,.apk file here |
/abs/path/to/my.apk or http://myapp.com/app.ipa |
otherApps |
运行测试之前要安装的应用程序或应用程序列表(作为JSON数组);请注意,它不适用于automationName of 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 |
true ,false |
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 |
Capability | Description | Values |
---|---|---|
settings[settingsKey] |
Update Appium Settings on session creation | e.g., 'settings[mjpegScalingFactor]': 10, 'settings[shouldUseCompactResponses]': true |
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 的值相同;如果您的功能具有appActivity 和appPackage ,则必须将其设置为第一个关注的应用程序活动名称,以防它与设置为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,选择8200 到8299 之间的一个端口,对于appium espresso driver,选择8300 到8399 之间的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。如果chromedriverUseSystemExecutable 为true ,则忽略 |
/abs/path/to/chromedriver/directory |
chromedriverChromeMappingFile |
将Chromedriver版本映射到其支持的最低Chrome的文件的绝对路径;如果chromedriverUseSystemExecutable 为true ,则忽略 |
/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/version CDP(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 |
true orfalse |
noSign |
跳过对带有调试密钥的应用程序的检查和签名,将仅适用于UiAutomator,默认为false |
true or false |
ignoreUnimportantViews |
调用setCompressedLayoutHierarchy() uiautomator函数;此功能可以加快测试执行速度,因为可访问性命令将在忽略某些元素的情况下运行得更快;被忽略的元素将不可查找,这就是为什么此功能也被实现为可切换设置以及功能的原因;默认为false |
true or false |
disableAndroidWatchers |
禁用监视应用程序无响应和应用程序崩溃的android观察程序,这将减少android设备/仿真器上的cpu使用;此功能仅适用于UiAutomator,默认为false |
true orfalse |
chromeOptions |
允许ChromeDriver传递chromeOptions功能;chromeOptions | chromeOptions: {args: ['--disable-popup-blocking']} |
recreateChromeDriverSessions |
移动到非ChromeDriver webview时终止ChromeDriver会话;默认为false | true or false |
nativeWebScreenshot |
在web环境中,使用本机(adb)方法拍摄屏幕截图,而不是代理到ChromeDriver;默认为false |
true orfalse |
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将根据其配置方式启用或不启用此选项 | true orfalse |
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 |
true orfalse |
chromedriverDisableBuildCheck |
设置chromedriver标志--disable-build-check 用于Chrome webview测试 |
true or false |
skipUnlock |
在会话创建期间跳过解锁;默认为false |
true or 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 |
true or false |
skipLogcatCapture |
跳过以开始捕获logcat;它可能会提高性能,如网络;与日志相关的命令将不起作用;默认为false |
true or 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 |
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 , etc. |
请参阅UIAutomator2驱动程序存储库中有关其可用功能的文档
请参阅Espresso驱动程序存储库中有关其可用功能的文档
这些功能仅在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 |
true or false |
autoAcceptAlerts |
自动接受所有弹出的iOS警报;这包括隐私访问权限警报(例如,位置、联系人、照片);默认值为false | true or false |
autoDismissAlerts |
如果出现所有iOS警报,则自动关闭它们;这包括隐私访问权限警报(例如,位置、联系人、照片);默认值为false |
true or false |
nativeInstrumentsLib |
使用本机仪器库(即立即禁用仪器) | true or 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卡设置 | true orfalse |
safariOpenLinksInBackground |
(仅限Sim卡)Safari是否应允许在新窗口中打开链接;默认保持当前sim卡设置 | true or 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, grouped or 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. 12000 or "/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 |
Please refer to the documentation on the XCUITest driver repository about its available capabilities.
Please refer to the documentation on the safaridriver repository about its available capabilities.
Please refer to the documentation on the geckodriver repository about its available capabilities.
Please refer to the documentation on the MacDriver repository about its available capabilities.
Please refer to the documentation on the Mac2Driver repository about its available capabilities.
Please refer to the documentation on the You.i Engine driver repository about its available capabilities.
Please refer to the documentation on the Appium Windows Diver repository about its available capabilities.
Please refer to the documentation on the Flutter Diver repository about its available capabilities.