python+Appium 中的 Desired Capabilities

Desired Capabilities 是由 keys 和 values 组成的 JSON 对象。

举个简单例子:

{
  "platformName": "Android",
  "deviceName": "4684d81d",
  "platformVersion": "8.1.0",
  "appPackage": "app包名",
  "appActivity": "app入口",
  "noReset": true
}       

 

基本参数

能力

描述

automationName

使用哪个自动化引擎

Appium(默认)或Selendroid或者UiAutomator2或者Espresso对于Android或XCUITestiOS或者YouiEngine使用You.i引擎构建的应用程序

platformName

使用哪个移动操作系统平台

iOS,Android或FirefoxOS

platformVersion

移动操作系统版本

例如7.1,4.4

deviceName

使用的移动设备或模拟器的种类

iPhone Simulator,iPad Simulator,iPhone Retina 4-inch,Android Emulator,Galaxy S4,等....在iOS上,这应该是与仪器返回的有效设备之一instruments -s devices。在Android上,这个功能目前被忽略,尽管它仍然是必需的。

app

一个或一个文件的绝对本地路径远程http URL ,或者包含其中的一个。Appium将首先尝试在适当的设备上安装这个应用程序二进制文件。请注意,如果您指定和功能(请参阅下文),则此功能对于Android不是必需的。与...不兼容。.ipa.apk.zipappPackageappActivitybrowserName

/abs/path/to/my.apk 要么http://myapp.com/app.ipa

browserName

移动网页浏览器的名称自动化。应该是一个空字符串,而不是自动化应用程序。

适用于iOS的“Safari”,适用于Android的“Chrome”,“Chromium”或“浏览器”

newCommandTimeout

在假定客户端退出并结束会话之前,Appium将等待来自客户端的新命令(以秒为单位)

例如 60

language

(Sim / Emu-only)为模拟器/仿真器设置的语言

例如 fr

locale

(Sim / Emu-only)为模拟器/仿真器设置的语言环境

例如 fr_CA

udid

连接的物理设备的唯一设备标识符

例如 1ae203187fc012g

orientation

(Sim / Emu-only)从某个方向开始

LANDSCAPE 要么 PORTRAIT

autoWebview

直接进入Webview上下文。默认false

true, false

noReset

在此会话之前不要重置应用程序状态。在这里看到更多的细节

true, false

fullReset

执行完整的重置。在这里看到更多的细节

true, false

eventTimings

启用或禁用各种Appium内部事件的时间报告(例如,每个命令的开始和结束等)。默认为false。启用,使用true。然后将这些时间作为events回应查询当前会话的财产报告。请参阅事件时间文档了解此响应的结构。

例如, true

enablePerformanceLogging

(仅限Web和webview)启用Chromedriver(在Android上)或Safari(在iOS上)性能记录(默认false)

true, false

 

 

仅限Android

这些功能仅适用于基于Android的驱动程序(例如 UiAutomator2)。

能力

描述

appActivity

要从包中启动的Android活动的活动名称。这往往需要在一个.(例如,.MainActivity而不是MainActivity)

MainActivity, .Settings

appPackage

你想运行的Android应用程序的Java包

com.example.android.myApp, com.android.settings

appWaitActivity

活动名称/名称,逗号分隔,您想要等待的Android活动

SplashActivity,SplashActivity,OtherActivity,*,*.SplashActivity

appWaitPackage

您想等待的Android应用程序的Java包

com.example.android.myApp, com.android.settings

appWaitDuration

用于等待appWaitActivity启动的超时(以毫秒为单位20000)(默认)

30000

deviceReadyTimeout

在等待设备准备就绪的几秒钟内超时

5

androidCoverage

完全合格的仪器类。通过-w在adb shell中,仪器-e覆盖率为true -w

com.my.Pkg/com.my.Pkg.instrumentation.MyInstrumentation

androidCoverageEndIntent

由您自己执行的广播操作,用于将覆盖转储到文件系统。传递到-a在adb外壳广播-a

com.example.pkg.END_EMMA

androidDeviceReadyTimeout

用于等待设备在启动后准备就绪的秒数

例如, 30

androidInstallTimeout

用于等待apk安装到设备的超时(以毫秒为单位)。默认为90000

例如, 90000

androidInstallPath

安装前将在其中安装apk的设备上的目录名称。默认为/data/local/tmp

例如 /sdcard/Downloads/

adbPort

用于连接到ADB服务器的端口(默认5037)

5037

remoteAdbHost

可选的远程ADB服务器主机

例如:192.168.0.101

androidDeviceSocket

Devtools套接字名称。只有当测试的应用程序是Chromium嵌入式浏览器时才需要。套接字由浏览器打开,并且Chromedriver作为devtools客户端连接到它。

例如, chrome_devtools_remote

avd

avd的名称发射

例如, api19

avdLaunchTimeout

avd启动并连接到ADB需要多长时间(默认值120000)

300000

avdReadyTimeout

avd完成启动动画需要多长时间(默认120000)

300000

avdArgs

启动avd时使用的其他仿真器参数

例如, -netfast

useKeystore

使用自定义密钥库来签署apks,默认 false

true 要么 false

keystorePath

自定义密钥库路径,默认〜/ .android / debug.keystore

例如, /path/to.keystore

keystorePassword

自定义密钥库的密码

例如, foo

keyAlias

密钥的别名

例如, androiddebugkey

keyPassword

密钥的密钥

例如, foo

chromedriverExecutable

webdriver可执行文件的绝对本地路径(如果Chromium embedder提供了自己的webdriver,则应该使用它来代替与Appium捆绑在一起的原始chromedriver)

/abs/path/to/webdriver

autoWebviewTimeout

等待Webview上下文激活的时间(以毫秒为单位)。默认为2000

例如 4

intentAction

意图操作将用于启动活动(默认android.intent.action.MAIN)

例如android.intent.action.MAIN,android.intent.action.VIEW

intentCategory

意图类别,将用于启动活动(默认android.intent.category.LAUNCHER)

例如android.intent.category.LAUNCHER,android.intent.category.APP_CONTACTS

intentFlags

将用于启动活动的标志(默认0x10200000)

例如 0x10200000

optionalIntentArguments

将用于启动活动的其他意图参数。请参阅意向参数

例如--esn <EXTRA_KEY>,--ez <EXTRA_KEY> <EXTRA_BOOLEAN_VALUE>等等。

dontStopAppOnReset

在使用adb启动应用程序之前,不要停止被测试的应用程序的进程。如果被测试的应用程序是由另一个定位应用程序创建的,那么将其设置为false将允许在使用adb的测试应用程序启动过程中定位应用程序的过程仍然存在。换句话说,在dontStopAppOnReset设置的时候true,我们不会-S在adb shell am start通话中包含标志。有了这个能力被省略或设置为false,我们包括-S标志。默认false

true 要么 false

unicodeKeyboard

启用Unicode输入,默认 false

true 要么 false

resetKeyboard

使用unicodeKeyboard功能运行Unicode测试后,将键盘重置为原始状态。如果单独使用,则忽略。默认false

true 要么 false

noSign

使用调试键跳过检查和签名应用程序,只能使用UiAutomator,而不能使用selendroid,默认false

true 要么 false

ignoreUnimportantViews

调用setCompressedLayoutHierarchy()uiautomator函数。此功能可以加快测试执行速度,因为辅助功能命令将更快地忽略某些元素。被忽略的元素是不可能找到的,这就是为什么这个功能也被实现为可切换的设置以及功能。默认为false

true 要么 false

disableAndroidWatchers

禁用观察应用程序没有响应和应用程序崩溃的android观察者,这将减少Android设备/模拟器上的CPU使用率。这个功能只能用于UiAutomator,而不能用于selendroid,默认false

true 要么 false

chromeOptions

允许ChromeDriver传递chromeOptions功能。有关更多信息,请参阅chromeOptions

chromeOptions: {args: ['--disable-popup-blocking']}

recreateChromeDriverSessions

在移至非ChromeDriver网页浏览的情况下杀死ChromeDriver会话。默认为false

true 要么 false

nativeWebScreenshot

在Web上下文中,使用本地(adb)方法截取屏幕截图,而不是代理ChromeDriver。默认为false

true 要么 false

androidScreenshotPath

将要放置屏幕截图的设备上的目录名称。默认为/data/local/tmp

例如 /sdcard/screenshots/

autoGrantPermissions

让Appium自动确定您的应用程序需要哪些权限,并在安装时将其授予应用程序。默认为false

true 要么 false

networkSpeed

设置网络速度模拟。指定最大的网络上传和下载速度。默认为full

['full','gsm', 'edge', 'hscsd', 'gprs', 'umts', 'hsdpa', 'lte', 'evdo']检查-netspeed选项有关avds速度仿真的更多信息

gpsEnabled

在开始会话之前,切换模拟器的gps位置提供程序。默认情况下,仿真器将根据设置的方式启用或不启用此选项。

true 要么 false

isHeadless

true当不需要显示设备显示时,将此功能设置为无运行模拟器。false是默认值。isHeadless也支持iOS,请检查XCUITest的具体功能。

例如, true

 

 

仅限iOS

这些功能仅适用于XCUITest驱动程序和过时的UIAutomation驱动程序

能力

描述

calendarFormat

(仅限SIM)为iOS模拟器设置的日历格式

例如 gregorian

bundleId

测试中的应用程序的捆绑ID。用于在真实设备上启动应用程序或在测试启动期间使用其他需要包ID的大写字母。要使用软件包ID在真实设备上运行测试,可以省略“应用”功能,但必须提供“udid”。

例如 io.appium.TestApp

udid

连接的物理设备的唯一设备标识符

例如 1ae203187fc012g

launchTimeout

假设它挂起和失败会话之前以毫秒为单位等待仪器的时间

例如 20000

locationServicesEnabled

(仅限SIM)强制定位服务处于打开或关闭状态。默认是保持当前的模拟设置。

true 要么 false

locationServicesAuthorized

(仅限SIM)通过plist将位置服务设置为授权或未授权,以便位置服务警报不会弹出。默认是保持当前的模拟设置。请注意,如果您使用此设置,您还必须使用该bundleId功能发送您的应用的捆绑ID。

true 要么 false

autoAcceptAlerts

如果弹出,则自动接受所有iOS警报。这包括隐私访问权限提醒(例如,位置,联系人,照片)。默认是false。不适用于XCUITest基于测试。

true 要么 false

autoDismissAlerts

如果弹出,则自动关闭所有iOS警报。这包括隐私访问权限提醒(例如,位置,联系人,照片)。默认是false。不适用于XCUITest基于测试。

true 要么 false

nativeInstrumentsLib

使用本机intruments lib(即禁用仪器,无延迟)。

true 要么 false

nativeWebTap

(仅限SIM)在Safari中启用“真实”,非基于JavaScript的网页浏览。默认:false。警告:根据视口的大小/比例,这可能无法准确地点击一个元素

true 要么 false

safariInitialUrl

(仅限SIM)(> = 8.1)初始Safari浏览器网址,默认为本地欢迎页面

例如 https://www.github.com

safariAllowPopups

(仅限Sim)允许JavaScript在Safari中打开新窗口。默认保持当前的模拟设置

true 要么 false

safariIgnoreFraudWarning

(仅限SIM)防止Safari显示欺诈网站警告。默认保持当前的模拟设置。

true 要么 false

safariOpenLinksInBackground

(仅限SIM)Safari是否应允许在新窗口中打开链接。默认保持当前的模拟设置。

true 要么 false

keepKeyChains

(Sim-only)当appium会话开始/结束时是否保留钥匙串(Library / Keychains)

true 要么 false

localizableStringsDir

在哪里寻找可本地化的字符串。默认en.lproj

en.lproj

processArguments

使用工具传递给AUT的参数

例如, -myflag

interKeyDelay

输入时发送到元素的击键之间的延迟,以毫秒为单位。

例如, 100

showIOSLog

是否显示从appium日志中的设备捕获的任何日志。默认false

true 要么 false

sendKeyStrategy

用于将测试类型输入测试领域的策略。模拟器默认:oneByOne。实际设备默认值:grouped

oneByOne,grouped或者setValue

screenshotWaitTimeout

以秒为单位的最大超时等待生成屏幕截图。默认:10

例如, 5

waitForAppScript

ios自动化脚本用于确定应用程序是否已启动,默认情况下系统等待页面源不为空。结果必须是布尔值

例如true;,target.elements().length > 0;,$.delay(5000); true;

webviewConnectRetries

向远程调试器发送连接消息以获取webview的次数。默认:8

例如, 12

appName

被测应用程序的显示名称。用于在iOS 9+中自动化后台应用程序。

例如, UICatalog

customSSLCert

(仅限Sim / Emu)向模拟器添加SSL证书。

例如 
-----BEGIN CERTIFICATE-----MIIFWjCCBEKg...
-----END CERTIFICATE-----

webkitResponseTimeout

(仅限实际设备)设置时间(以毫秒为单位)以等待Safari会话中WebKit的响应。默认为5000

例如, 10000

  
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   

Android特有

关键字描述实例
appActivity启动app包,一般点开头如:.MainActivity.Settings
appPackageAndroid应用的包名比如com.example.android.myApp
appWaitActivity等待启动的Activity名称SplashActivity
deviceReadyTimeout设置超时时间5
androidCoverage用于执行测试的 instrumentation类com.my.Pkg/com.my.Pkg.instrumentation.MyInstrumentation
enablePerformanceLogging(仅适用于 Chrome 和 webview) 开启 Chromedriver 的性能日志。(默认 false)truefalse
androidDeviceReadyTimeout等待设备在启动应用后超时时间,单位秒如 30
androidDeviceSocket开发工具的 socket 名称。Chromedriver 把它作为开发者工具来进行连接。如 chrome_devtools_remote
avd需要启动的 AVD (安卓模拟器设备) 名称。如 api19
avdLaunchTimeout以毫秒为单位,等待 AVD 启动并连接到 ADB的超时时间。(默认值 120000)300000
avdReadyTimeout以毫秒为单位,等待 AVD 完成启动动画的超时时间。(默认值 120000)300000
avdArgs启动 AVD 时需要加入的额外的参数。如 -netfast
useKeystore使用一个自定义的 keystore 来对 apk 进行重签名。默认值 falsetrue or false
keystorePath自定义keystore路径。默认~/.android/debug.keystore如 /path/to.keystore
keystorePassword自定义 keystore 的密码。如 foo
keyAliaskey 的别名如 androiddebugkey
keyPasswordkey 的密码如 foo
chromedriverExecutablewebdriver可执行文件的绝对路径 应该用它代替Appium 自带的 webdriver)/abs/path/to/webdriver
autoWebviewTimeout毫秒为单位,Webview上下文激活的时间。默认2000如 4
intentAction用于启动activity的intent action。(默认值 android.intent.action.MAIN)如 android.intent.action.MAINandroid.intent.action.VIEW
intentCategory用于启动 activity 的 intent category。 (默认值 android.intent.category.LAUNCHER)如 android.intent.category.LAUNCHERandroid.intent.category.APP_CONTACTS
intentFlags用于启动activity的标识(flags) (默认值 0x10200000)如 0x10200000
optionalIntentArguments用于启动 activity 的额外 intent 参数。请查看 Intent 参数如 --esn <EXTRA_KEY>--ez <EXTRA_KEY> <EXTRA_BOOLEAN_VALUE>
dontStopAppOnReset在使用 adb 启动应用时不要停止被测应用的进程。默认值: falsetrue 或 false
unicodeKeyboard使用 Unicode 输入法。默认值 falsetrue 或 false
resetKeyboard重置输入法到原有状态,默认值 falsetrue 或 false
noSign跳过检查和对应用进行 debug 签名的步骤。默认值 falsetrue 或 false
ignoreUnimportantViews调用 uiautomator 的函数这个关键字能加快测试执行的速度。默认值 falsetrue 或 false
disableAndroidWatchers关闭 android 监测应用无响ANR和崩溃crash的监视器默认值: falsetrue 或者 false
chromeOptions允许传入 chrome driver 使用的 chromeOptions 参数。请查阅 chromeOptions 了解更多信息。chromeOptions: {args: [‘--disable-popup-blocking‘]}

iOS特有

关键字描述实例
calendarFormat(Sim-only) 为iOS的模拟器设置日历格式如 gregorian (公历)
bundleId被测应用的bundle ID,真机上执行测试时,你可以不提供 app 关键字,但你必须提供udid如 io.appium.TestApp
udid连接真机的唯一设备编号 ( Unique device identifier )如 1ae203187fc012g
launchTimeout以毫秒为单位,在Appium运行失败之前设置一个等待 instruments的时间比如: 20000
locationServicesEnabled(Sim-only) 强制打开或关闭定位服务。默认值是保持当前模拟器的设定true 或 false
locationServicesAuthorized使用这个关键字时,你同时需要使用 bundleId 关键字来发送你的应用的 bundle ID。true 或者 false
autoAcceptAlerts当 iOS 的个人信息访问警告 (如 位置、联系人、图片) 出现时,自动选择接受( Accept )。默认值 falsetrue 或者 false
autoDismissAlerts当 iOS 的个人信息访问警告 (如 位置、联系人、图片) 出现时,自动选择不接受( Dismiss )。默认值 falsetrue 或者 false
nativeInstrumentsLib使用原生 intruments 库 (即关闭 instruments-without-delay )true 或者 false
nativeWebTap(Sim-only) 在Safari中允许"真实的",默认值: false。注意:取决于 viewport 大小/比例, 点击操作不一定能精确地点中对应的元素。true 或者 false
safariInitialUrl(Sim-only) (>= 8.1) Safari 的初始地址。默认值是一个本地的欢迎页面例如: https://www.github.com
safariAllowPopups(Sim-only) 允许 javascript 在 Safari 中创建新窗口。默认保持模拟器当前设置。true 或者 false
safariIgnoreFraudWarning(Sim-only) 阻止 Safari 显示此网站可能存在风险的警告。默认保持浏览器当前设置。true 或者 false
safariOpenLinksInBackground(Sim-only) Safari 是否允许链接在新窗口打开。默认保持浏览器当前设置。true 或者 false
keepKeyChains(Sim-only) 当 Appium 会话开始/结束时是否保留存放密码存放记录 (keychains) (库(Library)/钥匙串(Keychains))true 或者 false
localizableStringsDir从哪里查找本地化字符串。默认值 en.lprojen.lproj
processArguments通过 instruments 传递到 AUT 的参数如 -myflag
interKeyDelay以毫秒为单位,按下每一个按键之间的延迟时间。如 100
showIOSLog是否在 Appium 的日志中显示设备的日志。默认值 falsetrue 或者 false
sendKeyStrategy输入文字到文字框的策略。模拟器默认值:oneByOne (一个接着一个) 。真实设备默认值:grouped (分组输入)oneByOnegrouped 或 setValue
screenshotWaitTimeout以秒为单位,生成屏幕截图的最长等待时间。默认值: 10。如 5
waitForAppScript用于判断 "应用是否被启动” 的 iOS 自动化脚本代码。默认情况下系统等待直到页面内容非空。结果必须是布尔类型。例如 true;target.elements().length > 0;$.delay(5000); true;
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值