今天詳解一下Capabilities的各個標簽,以后如果用得着可以隨時翻閱。
General Capabilities
標簽 | 概述 | 值 |
automationName | 使用引擎 | 默認為Appium,其中Appium、UiAutomator2、Selendroid、Espresso用於Android,XCUITest用於iOS |
platformName | 操作系統 | 如iOS、Android、FirefoxOS |
platformVersion | 操作系統版本 | 如7.1,4.4 |
deviceName | 設備名 | 如iPhone Simulator, iPad Simulator, iPhone Retina 4-inch, Android Emulator, Galaxy S4,iOS需要,Android可以忽略 |
app | apk、.ipa等的加載路徑 | 如D:\\text.apk、/home/zhuyt/test.ipa |
browserName | 瀏覽器名,若為app則省略 | 如'Safari'、'Chromium' |
newCommandTimeout | appium server與client的超時時間 | 如60s |
language | 語言,默認只有用Siumulator才有效 | 如fr |
locale | 國家地區,默認只有用Siumulator才有效 | 如fr_CA, CA |
udid | 連接的物理設備的唯一設備標識符 | 如1ae203187fc012g |
orientation | (僅限Sim / Emu)以某個方向開始 | LANDSCAPE or PORTRAIT |
autoWebview | 直接進入Webview上下文,默認False | True,False |
noReset | 在會話前,不重啟app,重啟的話只刪除數據 | True,False |
fullReset | 完全重啟app,刪除app,數據后重啟 | True,False |
eventTimings | 啟用或禁用各種Appium內部事件的時間報告,默認False | True,False |
enablePerformanceLogging | (僅限Web和webview)使在Chrome(在Android上)或Safari(在iOS上)可以有log(默認為false) | True,False |
printPageSourceOnFindFailure | 當某個操作失敗時,打印當前頁面代碼,默認False | True,False |
Android Only
標簽 | 概述 | 值 |
appActivity | package中想要運行的Activity name,名字前通常需要加.,默認從package manifest讀取 | 如.MainActivity,MainActivity |
appPackage | Android app中想要運行的Java的package包,默認從package manifest讀取 | 如com.example.android.myApp |
appWaitActivity | 設置要等待的activity,默認與appActivity一樣,若有appActivity、appPackage,則必須設置為第一個啟動的activity名稱 | 如MainActivity,MainActivity |
appWaitPackage | 要等待的App內的Java Package,默認與appPackage相等. | 如com.example.android.myApp, com.android.settings |
appWaitDuration | 用於等待appWaitActivity啟動的超時(以毫秒為單位)(默認為20000) | 如30000 |
deviceReadyTimeout | 等待設備准備就緒時的超時時間(默認為s) | 如5 |
allowTestPackages | 如果在manifest中有android:testOnly="true",則允許安裝test Package,默認為False | True,False |
androidCoverage | 用於執行測試的 instrumentation 類, adb shell am instrument -e coverage true -w | 后接instumentation類,如com.my.Pkg.instrumentation.MyInstrumentation |
androidCoverageEndIntent | 設置實施的廣播操作,覆蓋范圍為文件系統。即調用adb shell am broadcast -a | 后接參數如com.example.pkg.END_EMMA |
androidDeviceReadyTimeout | 設備引導結束后,准備就緒的超時時間 | 如30 |
androidInstallTimeout | 安裝apk用的超時時間,默認90000毫秒 | 如90000 |
androidInstallPath | apk安裝前會先被push到的地址,默認是/data/local/tmp | 如/sdcard/Downloads/ |
adbPort | adb server的port,默認是5037 | 如5037 |
systemPort | SystemPort用來連接appium-uiautomator2-server 或 appium-espresso-driver。對於前者,端口通常是8200-8299,后者為8300-8399,當兩者都要用時,要注意產生沖突 | 如8201 |
remoteAdbHost | 遠程的ADB host | 如192.168.0.101 |
androidDeviceSocket | Devtools套接字名稱。 僅在測試的應用程序是Chromium瀏覽器時才需要。 套接字由瀏覽器打開,Chromedriver作為devtools客戶端連接瀏覽器。 | 如chrome_devtools_remote |
avd | 要啟動的avd名 | 如api19 |
avdLaunchTimeout | avd啟動並連接到adb的超時時間,默認為60000毫秒 | 如30000 |
avdReadyTimeout | avd完成啟動的動畫需要的超時時間,默認為120000毫秒 | 如30000 |
avdArgs | 模擬器啟動時額外的參數 | 如-netfast |
useKeystore | 使用自定義密鑰庫對apk簽名,默認為false | True,Fasle |
keystorePath | 自定義密鑰庫的地址,默認為~/.android/debug.keystore | 如/path/to.keystore |
keystorePassword | 密鑰庫的密碼 | 如foo |
keyAlias | 密鑰的別名 | 如androiddebugkey |
keyPassword | 密鑰的密碼 | 如foo |
chromedriverExecutable | webdriver的絕對路徑,如果chrome提供給了自己的wedriver,則應使用這,不用與appium綁定的chromedriver | 如/abs/path/to/webdriver |
chromedriverExecutableDir | chromedriver的路徑,會自動在該路徑尋找chromedriver,如果chromedriverUseSystemExecutable 是true,則忽略 | 如/abs/path/to/chromedriver/directory |
chromedriverChromeMappingFile | 文件的絕對路徑,將Chromedriver版本映射到它支持的最小Chrome。 如果chromedriverUseSystemExecutable為true,則忽略 | 如/abs/path/to/mapping.json |
chromedriverUseSystemExecutable | 如果為true,則繞過自動Chromedriver配置並使用隨Appium下載的版本。 如果設置了chromedriverExecutable,則忽略。 默認為false | True,False |
autoWebviewTimeout | 等待webView激活的超時時間,默認是2000毫秒 | 如2000 |
intentAction | 用於啟動 activity 的 intent action,默認值為android.intent.action.MAIN | 如android.intent.action.MAIN |
intentCategory |
|
如android.intent.category.LAUNCHER, android.intent.category.APP_CONTACTS |
intentFlags | 用於啟動的activity的標志,默認0x10200000 | 如0x10200000 |
optionalIntentArguments | 用於啟動activity的intent action的參數 | 如--esn <EXTRA_KEY>, --ez <EXTRA_KEY> <EXTRA_BOOLEAN_VALUE> |
dontStopAppOnReset | 用於是否關閉activity所屬的app后再啟動activity,等同於adb shell am start 是否使用-S參數 | True,False |
unicodeKeyboard | 使可以輸入Unicode,默認為False | True,False |
resetKeyboard | 在用Unicode測試完成后,將鍵盤reset,不可單獨使用,默認為False | True,False |
noSign | 使用調試鍵跳過檢查和簽名應用程序,僅適用於UiAutomator,而不適用於selendroid,默認為false | True,False |
ignoreUnimportantViews | 是否調用uiautomator的函數setCompressedLayoutHierarchy(),此功能能加快測試速度,Accessibility命令將更快地運行而忽略某些元素 | True,False |
disableAndroidWatchers | 是否禁用app的監聽功能,這會減少cpu使用率。此功能僅適用於UiAutomator,而不適用於selendroid,默認為false | True,False |
chromeOptions | 提供chromeDriver的capability參數 | chromeOptions: {args: ['--disable-popup-blocking']} |
recreateChromeDriverSessions | 移動至非web程序時,是否殺掉chromeDriver | True,False |
nativeWebScreenshot | 在web程序中,用原生adb截圖,而不是chromeDriver | True,False |
androidScreenshotPath | 文件截圖默認存放地址 | 如/sdcard/screenshots/ |
autoGrantPermissions | 讓appium自動授權app權限,如果noReset為True,則該條不生效 | True,False |
networkSpeed | 指定網絡最快上傳與下載速度 | 如['full','gsm', 'edge', 'hscsd', 'gprs', 'umts', 'hsdpa', 'lte', 'evdo'] |
gpsEnabled | 是否啟動gps | True,False |
isHeadless | 將此功能設置為true可在無需顯示設備時運行仿真器。 false是默認值isHeadless也支持iOS,檢查特定於XCUITest的功能 | True,False |
otherApps | 運行測試前需要安裝的app列表 | 如"/path/to/app.apk", https://www.example.com/url/to/app.apk, ["/path/to/app-a.apk", "/path/to/app-b.apk"] |
adbExecTimeout | adb指令超時時間,默認是20000毫秒 | 如50000 |
localeScript | 建立一個script | 例如"Cyrl" (Cyrillic) |
UIAutomator2 Only
標簽 | 概述 | 值 |
uiautomator2ServerLaunchTimeout | 等待uiAutomator2的server啟動超時時間,單位毫秒 | 如3000 |
uiautomator2ServerInstallTimeout | 等待uiAutomator2的server被安裝超時時間,單位毫秒 | 如3000 |
Espresso Only
標簽 | 概述 | 值 |
espressoServerLaunchTimeout | 等待espresso的server的啟動超時時間,單位毫秒 | 如3000 |
iOS Only
標簽 | 概述 | 值 |
calendarFormat | (僅限Sim)要為iOS模擬器設置的日歷格式 | 如gregorian |
bundleId | 被測試應用程序的bundle Id。用於在真實設備中啟動測試,。在使用 bundle ID 在真實設備上執行測試時,你可以省略'app'關鍵字,但你必須提供 `udid` , | 如io.appium.TestApp |
udid | 設備唯一物理地址號 | 如1ae203187fc012g |
launchTimeout | 啟動超時時間,單位毫秒 | 如3000 |
locationServicesEnabled | (僅限Sim)強制關閉定位與否。 | True,False |
locationServicesAuthorized | (僅限Sim)通過修改 plist 文件設定是否允許應用使用定位服務,從而避免定位服務的警告出現。請注意在使用這個關鍵字時,必須需要使用 `bundleId` 關鍵字來發送應用的 bundle ID。 | True,False |
autoAcceptAlerts | 接收任何警告處理,包括隱私訪問許可警報。默認為False。不適用於基於XCUITest的測試。 | True,False |
autoDismissAlerts | 不接受任何警告處理,包括隱私訪問許可警報。默認為False。不適用於基於XCUITest的測試。 | True,False |
nativeInstrumentsLib | 使用原生 intruments 庫 (即關閉 instruments-without-delay ) | True,False |
nativeWebTap | (僅限Sim)在Safari中啟用“真實的”非基於JavaScript的網絡點擊。 默認值:false。 警告:根據視口大小/比例,這可能無法准確地點擊元素 | True,False |
safariInitialUrl | (僅限Sim)(>= 8.1) 初始的safari的URL,默認是當前的歡迎頁 | 如https://www.github.com |
safariAllowPopups | (僅限Sim)允許用JS在Safari中打開新窗口。 | True,False |
safariIgnoreFraudWarning | (僅限Sim)防止Safari顯示欺詐性網站警告。 | True,False |
safariOpenLinksInBackground | (僅限Sim)Safari是否應允許在新窗口中打開鏈接。 | True,False |
keepKeyChains | (僅限Sim)是否在啟動/完成appium會話時保留KeyChains,即保存密碼等。 | True,False |
localizableStringsDir | (僅限Sim)是否尋找本地化的字符串。默認en.lproj | True,False |
processArguments | 通過 instruments 傳遞到 AUT 的參數 | 如-myflag |
interKeyDelay | 輸入值時發送到元素的延遲時間 | 如100 |
showIOSLog | 是否在appium日志中顯示從設備捕獲的任何日志。 默認為false | True,False |
sendKeyStrategy | 輸入文本到文本框的策略。模擬器默認:一個一個輸。真實設備:分組輸 | oneByOne, grouped or setValue |
screenshotWaitTimeout | 等待生成屏幕截圖的最大超時秒數。 默認值:10,單位為秒 | 如10 |
waitForAppScript | 用於判斷 "應用是否被啟動” 的 iOS 自動化腳本代碼。默認情況下系統等待直到頁面內容非空。結果必須是布爾類型。 | 如true;, target.elements().length > 0;, $.delay(5000); |
webviewConnectRetries | 將連接消息發送到遠程調試器以獲取webview的次數。 默認值:8 | 如8 |
appName | 被測試的app的顯示名字。IOS系統版本需要為9.0+ | 如UICatalog |
customSSLCert | (僅限Sim)將SSL證書添加到iOS的模擬器中 | 如 -----BEGIN CERTIFICATE-----MIIFWjCCBEKg... |
webkitResponseTimeout | (只限制真實設備)等待safari中頁面的響應時間,默認為毫秒 | 如3000 |
remoteDebugProxy | (僅限Sim, <= 11.2)如果設置,Appium通過本地端口(僅限Sim,<= 11.2)上的代理或此unix套接字上的代理(僅Sim> = 11.3)發送和接收遠程調試消息,而不是直接與iOS遠程調試器通信。 例如 12000 | 如12000 or "/tmp/my.proxy.socket" |