『與善仁』Appium基礎 — 11、補充:Desired Capabilities參數介紹


上篇文章中提到了Desired capabilities,下面介紹一下Desired capabilities的每個參數:

提示:

  • Desired capabilities的參數非常的多,但是在我們實際的工作用,常用的也就是其中的幾個,我們沒有必要全部都記下來,以后我們用到哪些參數,就掌握哪些參數就可以了。
  • Desired capabilities參數官方查看地址:http://Appium.io/docs/en/writing-running-Appium/caps/

1、通用參數

這些功能跨越多個驅動程序。

關鍵字 描述 實例
automationName 使用哪個自動化引擎 Appium(缺省),或UiAutomator2, Espresso,或UiAutomator1對於Android,或者XCUITestInstruments適用於IOS,或YouiEngine與你一起建造的應用程序.引擎
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到.ipa檔案(IOS),.app文件夾(IOS模擬器),.apk文件(Android)或.apks文件(AndroidAppBundle),或.zip包含其中之一的文件。Appium將嘗試首先在適當的設備上安裝此應用程序二進制文件。請注意,如果您指定appPackageappActivity功能(見下文)。UiAutomator2XCUITest允許在沒有appappPackage。不相容的browserName。看見這里關於.apks檔案。 /abs/path/to/my.apkhttp://myapp.com/app.ipa
otherApps 在運行測試之前安裝的應用程序或應用程序列表(作為JSON數組)。請注意,它不適用於automationNameEspresso和IOS實設備 例如,"/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 移動瀏覽器名稱自動。如果將應用程序自動化,則應該是空字符串。 “Safari”用於iOS,“Chrome”、“Chromium”或“Browser”用於Android
newCommandTimeout 在假定客戶端退出並結束會話之前,Appium將等待客戶端的新命令多長時間(以秒為單位) G.60
language 將語言設置為IOS(僅限於XCUITest驅動程序)和Android。 G.fr
locale 區域設置為IOS(僅限於XCUITest驅動程序)和Android。fr_CAIOS格式。CAAndroid格式(國家名稱縮寫) G.fr_CA, CA
udid 連接物理設備的唯一設備標識符 G.1ae203187fc012g
orientation (僅限SIM/Emu-)從某一方向開始 LANDSCAPEPORTRAIT
autoWebview 直接進入WebView上下文。違約false true, false
noReset 不要在此會話之前重置應用程序狀態。看見這里想了解更多細節 true, false
fullReset 執行完全重置。看見這里想了解更多細節 true, false
eventTimings 啟用或禁用各種Appium內部事件的時間報告(例如,每個命令的開始和結束等)。默認為false。若要啟用,請使用true。然后將時間報告為events屬性在響應查詢當前會話時設置。見事件定時文檔對於這個反應的結構。 例如,true
enablePerformanceLogging (僅支持Web和webview)啟用Chromeriver(Android)或Safari(在IOS上)性能日志(默認)false) true, false
printPageSourceOnFindFailure 當查找操作失敗時,打印當前頁源。默認為false. 例如,true
clearSystemFiles 刪除會話結束時生成的任何文件。默認為false. true, false
關鍵字 描述 實例
settings[settingsKey] 更新Appium設置關於會話創建。 例如,'settings[mjpegScalingFactor]': 10, 'settings[shouldUseCompactResponses]': true

2、僅限Android

這些功能僅適用於基於android的驅動程序(如UiAutomator 2例如)。

能力 描述 價值
appActivity 要從包中啟動的Android活動的活動名稱。這通常需要在此之前加上一個.(例如,.MainActivity而不是MainActivity)。默認情況下,此功能來自包清單(action:android.intent.action.MAIN,類別:android.intent.taxy.LAUNHER) MainActivity, .Settings
appPackage 你想運行的Android應用程序的Java包。默認情況下,此功能是從包清單(@Package屬性值)接收的。 com.example.android.myApp, com.android.settings
appWaitActivity 活動名稱/名稱,逗號分隔,用於要等待的Android活動。默認情況下,此功能的值與appActivity...您必須將其設置為第一個焦點突出的應用程序活動名稱,以防它與設置為appActivity如果你的能力appActivityappPackage。您也可以使用通配符(*). 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默認情況下 truefalse
androidCoverage 完全合格的儀表類。傳遞到-w在亞行外殼是儀器-e覆蓋真-w com.my.Pkg/com.my.Pkg.instrumentation.MyInstrumentation
androidCoverageEndIntent 由您自己實現的一種廣播操作,用於將覆蓋率轉儲到文件系統中。轉到-a在亞洲開發銀行的空殼廣播-a com.example.pkg.END_EMMA
androidDeviceReadyTimeout 超時(以秒為單位),用於等待設備在啟動后准備就緒。 例如,30
androidInstallTimeout 超時(以毫秒為單位),用於等待apk安裝到設備上。默認為90000 例如,90000
androidInstallPath 安裝前要推送apk的設備上目錄的名稱。默認為/data/local/tmp G./sdcard/Downloads/
adbPort 用於連接到adb服務器的端口(默認值)5037) 5037
systemPort systemPort用於連接到Appium-uiAutomator2-服務器濃縮咖啡驅動器。默認情況是8200一般情況下,並從82008299Appium-uiAutomator2-服務器,是的8300從…83008399濃縮咖啡驅動器。並行運行測試時,必須調整端口以避免沖突。朗讀並行測試設置指南更多細節。 例如,8201
remoteAdbHost 可選遠程adb服務器主機 例如:192.168.0.101
androidDeviceSocket DevTools套接字名。只有在經過測試的應用程序是ChromiumEmbedded瀏覽器時才需要。該套接字由瀏覽器打開,Chromeriver作為DevTools客戶端連接到它。 例如,chrome_devtools_remote
avd AVD號即將發射 例如,api19
avdLaunchTimeout 以毫秒為單位等待AVD啟動和連接到亞行的時間(默認值)60000) 300000
avdReadyTimeout 以毫秒為單位等待AVD完成其引導動畫的時間(默認)120000) 300000
avdArgs 啟動AVD時使用的附加模擬器參數 例如,-netfast
useKeystore 使用自定義密鑰存儲庫對APK進行簽名,默認情況下false truefalse
keystorePath 自定義密鑰存儲庫的路徑,默認為~/.android/調試器 例如,/path/to.keystore
keystorePassword 自定義密鑰存儲的密碼 例如,foo
keyAlias 密鑰別名 例如,androiddebugkey
keyPassword 密鑰密碼 例如,foo
chromedriverExecutable Web驅動程序可執行文件的絕對本地路徑(如果ChromiumEmbedder提供了自己的Web驅動程序,則應該使用它來代替與Appium捆綁的原始色驅動程序) /abs/path/to/webdriver
chromedriverArgs 在Appium運行時傳遞給chromeriver二進制文件的參數數組。默認情況下,除了Appium內部使用的之外,沒有添加任何CLI args(例如--url-base, --port, --adb-port,和--log-path. 例如,["--disable-gpu", "--disable-web-security"]
chromedriverExecutableDir 查找Chromeriver可執行文件的目錄的絕對路徑,用於自動發現兼容的Chromeriver。忽略如果chromedriverUseSystemExecutabletrue /abs/path/to/chromedriver/directory
chromedriverChromeMappingFile 文件的絕對路徑,該文件將Chromeriver版本映射到它支持的最小Chrome。忽略如果chromedriverUseSystemExecutabletrue /abs/path/to/mapping.json
chromedriverUseSystemExecutable 如果true,繞過自動Chromeriver配置,並使用Appium下載的版本。忽略如果chromedriverExecutable已經設定好了。默認為false 例如,true
autoWebviewTimeout 等待WebView上下文活動的時間,以ms為單位。默認為2000 G.4
chromedriverPort 啟動Chromeriver的數字端口。請注意,不鼓勵使用此功能,因為如果存在多個Web視圖,則會導致未定義的行為。默認情況下,Appium將找到一個自由端口。 G.8000
chromedriverPorts Appium用於與Chromeriver通信的有效端口列表。此功能支持多個webview場景。這種功能的形式是一個數字端口數組,其中數組項本身可以是長度為2的數組,其中第一個元素是包含范圍的開始,第二個元素是結束。默認情況下,Appium將使用任何自由端口。 G.[8000, [9000, 9005]]
ensureWebviewsHavePages 無論Appium是否應該用頁面檢測來增強其webview檢測,以確保顯示在上下文列表中的任何webview上下文都有活動頁面。如果選擇了Chromeriver找不到任何頁面的上下文,這可以防止錯誤。默認為false G.true
webviewDevtoolsPort 支持ensureWebviewsHavePages特性,需要打開TCP端口,以便與正在測試的設備上的webview進行通信。此功能允許重寫9222,如果多個會話同時運行(以避免端口沖突),或在默認端口不適合您的系統時。 G.9543
enableWebviewDetailsCollection 通過/json/versionCDP(Chrome Developer Protocol)端點自Appium 1.18.0+。這有助於正確匹配支持給定WebView的Chromeriver版本。如果沒有啟用此標志,Appium將嘗試根據相應的已安裝包的版本(通常是該版本)猜測WebView的版本。失敗(用於自定義web視圖)。默認為false truefalse
dontStopAppOnReset 在使用亞行啟動應用程序之前,不會停止正在測試的應用程序的進程。如果被測試的應用程序是由另一個錨應用程序創建的,設置此錯誤,則允許錨應用程序的進程在使用亞行的測試應用程序啟動時仍然存在。換句話說,與dontStopAppOnReset設為true,我們將不包括-S標志在adb shell am start打電話。將此功能省略或設置為false,我們包括-S旗子。違約false truefalse
unicodeKeyboard 啟用Unicode輸入,默認值false truefalse
resetKeyboard 在運行unicode測試之后,將鍵盤重置為原始狀態。unicodeKeyboard能力。如果單獨使用會被忽略。違約false truefalse
noSign 帶調試鍵的應用程序的跳過檢查和簽名,只適用於UiAutomator,默認情況下false truefalse
ignoreUnimportantViews 調用setCompressedLayoutHierarchy()自動機函數此功能可以加快測試執行速度,因為可訪問性命令在忽略某些元素時運行得更快。忽略的元素是不可找到的,這就是為什么此功能也被實現為可切換的原因。設置同時也是一種能力。默認為false truefalse
disableAndroidWatchers 禁用用於監視應用程序沒有響應和應用程序崩潰的Android觀察者,這將減少Android設備/模擬器上的CPU使用。默認情況下,此功能僅適用於UiAutomator。false truefalse
chromeOptions 允許ChromeDriver通過色度選項功能。有關更多信息,請參見色度選擇 chromeOptions: {args: ['--disable-popup-blocking']}
recreateChromeDriverSessions 當移動到非ChromeDriver Web視圖時,關閉ChromeDriver會話。默認為false truefalse
nativeWebScreenshot 在Web環境中,使用本地(亞行)方法來截圖,而不是代理ChromeDriver。默認為false truefalse
androidScreenshotPath 將屏幕截圖放在設備上的目錄的名稱。默認為/data/local/tmp G./sdcard/screenshots/
autoGrantPermissions 讓Appium自動確定您的應用程序需要哪些權限,並在安裝時將它們授予應用程序。默認為false。如果noResettrue,此功能不起作用。 truefalse
networkSpeed 設置網絡速度仿真。指定網絡上傳和下載的最大速度。默認為full ['full','gsm', 'edge', 'hscsd', 'gprs', 'umts', 'hsdpa', 'lte', 'evdo']查帳-網速選項有關AVDS速度仿真的更多信息
gpsEnabled 在開始會話之前,切換模擬器的GPS位置提供程序。默認情況下,根據設置的方式,模擬器將啟用或不啟用此選項。 truefalse
isHeadless 將此功能設置為true若要在不需要顯示設備時運行無頭仿真程序,請執行以下操作。false默認值。無頭也是對IOS的支持,請檢查XCUITest的特定功能。 例如,true
adbExecTimeout 用於等待adb命令執行的超時(毫秒)。默認為20000 例如,50000
localeScript 設置區域設置劇本 例如,"Cyrl"(西里爾)
skipDeviceInitialization 跳過設備初始化,包括I.a.:安裝和運行Settings應用程序或設置權限。當設備已經用於自動化並為下一次自動化做好准備時,可以使用它來提高啟動性能。默認為false truefalse
chromedriverDisableBuildCheck 設置色驅動器標志--disable-build-check用於Chrome webview測試 truefalse
skipUnlock 在會話創建期間跳過解鎖。默認為false truefalse
unlockType 用特殊的鎖定模式解鎖目標設備,而不是僅僅用幫助程序喚醒設備。它適用於unlockKey能力。默認為未定義。fingerprint只適用於Android6.0+和模擬器。朗讀解鎖醫生在Android驅動程序中。 ['pin', 'password', 'pattern', 'fingerprint']
unlockKey 用於解鎖的關鍵模式unlockType. 例如,‘1111’
autoLaunch 自動初始化測試中的應用程序。如果這是false。默認為true truefalse
skipLogcatCapture 跳過以開始捕獲logcat。它可以提高網絡等性能。與日志相關的命令將無法工作。默認為false. truefalse
uninstallOtherPackages 包裹、包裹清單或*在安裝APK進行測試之前卸載軟件包/s。'*'卸載除Appium測試所必需的軟件包(如io.appium.settingsio.appium.uiautomator2.server因為Appium已經包含了管理它們的邏輯。 G."io.appium.example", ["io.appium.example1", "io.appium.example2"], '*'
disableWindowAnimation 如果該值為true。會話完成后,Appium將動畫縮放恢復到它的原始值。默認為false true, false
remoteAppsCacheLimit 設置被推送到測試中設備的本地存儲的遠程緩存APK的最大數量(默認為10)。當使用同一組APK時,遠程緩存APK將加速順序測試用例的執行,避免每次需要重新安裝時將apk推送到遠程文件系統。將此功能設置為0若要禁用緩存,請執行以下操作。 G.0, 5, 20
buildToolsVersion 指定Androidbuild-tools版本與默認版本不同,即使用最新版本。如果您的環境使用alpha/beta構建工具,那么使用非默認版本是有幫助的。 G.'28.0.3'
androidNaturalOrientation 允許正確地處理面向景觀的設備上的定位.設為true基本上改變了…的意思PORTRAITLANDSCAPE。默認為false true, false
enforceAppInstall 默認情況下,如果該應用程序的更新版本或相同版本已經出現在正在測試的設備上,則跳過應用程序安裝。將此選項設置為true將強制Appium始終獨立於當前安裝的版本安裝當前應用程序構建。默認為false. true , false
ignoreHiddenApiPolicyError 視而不見Security exception: Permission denial警告並允許從Appium 1.18.0+開始繼續會話創建過程。當Appium試圖放松時,會發生錯誤。隱藏API策略,盡管一些具有自定義固件的設備拒絕此類請求。默認為false. true, false
mockLocationApp 設置應用程序的包標識符,從Appium 1.18.0+開始用作系統模擬位置提供程序。此功能對模擬器沒有影響。如果值設置為null或空字符串,則Appium將跳過模擬的位置提供程序安裝過程。默認為Appium設置包標識符(io.appium.settings). 例如,null, io.appium.settings, example.your.app
LogcatFormat 從Appium 1.18.0開始設置logcat消息的輸出格式。支持的格式列在這里。請閱讀Logcat#outputFormat有關每種格式的詳細信息。默認為threadtime. 例如,process
LogcatFilterSPECS 為Appium 1.18.0以來的logcat消息設置輸出篩選規則。請閱讀Logcat#過濾器輸出有關該規則的更多詳細信息。用logcat編寫和查看日志也很有幫助。 例如,['*:W', 'MyActivity:D'] (MyActivity是標簽)

UIAutomator(1和2)

這些功能可在UIA 1和2上使用。

能力 描述 價值
intentAction 將用於啟動活動的意圖操作(默認)android.intent.action.MAIN) G.android.intent.action.MAIN, android.intent.action.VIEW
intentCategory 將用於啟動活動的意圖類別(默認)android.intent.category.LAUNCHER) G.android.intent.category.LAUNCHER, android.intent.category.APP_CONTACTS
intentFlags 將用於啟動活動的標志(默認值)0x10200000) G.0x10200000
optionalIntentArguments 用於啟動活動的附加意圖參數。看見意圖論點 G.--esn <EXTRA_KEY>, --ez <EXTRA_KEY> <EXTRA_BOOLEAN_VALUE>

只有UIAutomator 2

這些功能僅在UiAutomator2驅動程序

能力 描述 價值
appWaitForLaunch 嘗試在未進行測試的情況下啟動該應用程序-W選項在會話創建中。如果會話創建沒有繼續,則可能會有所幫助。shell am start沒有回應。默認為true. falsetrue
disableSuppressAccessibilityService 標志-不抑制-可訪問性服務為了允許現有的可訪問性服務繼續運行,可能會為Appium啟動一個新的服務。它有助於測試被測試的應用程序,它具有諸如對講機之類的可訪問性功能。如果沒有提供任何信息,Appium將不會指定標志。該標志需要AndroidAPI級別24+。 falsetrue
mjpegServerPort 如果指定,這是將綁定到appium-uiautomator2-server的MJPEG屏幕截圖流。這可以與mjpegScreenshotUrl。它應該是范圍內的有效整數。1025..65535。默認為null。G.mjpegScreenshotUrl = 'http://localhost:9200', mjpegServerPort = 9200 任何Integer,建議:9200..9299為保持一致性w/serverPort范圍
skipServerInstallation 跳過uiAutomator 2服務器安裝,並從設備中使用uiAutomator 2服務器。當設備上已經安裝了適當版本的uiAutomator 2服務器時,可以使用它來提高啟動性能。默認為false. falsetrue
uiautomator2ServerInstallTimeout 用於等待安裝uiAutomator 2服務器的超時(毫秒)。默認為20000 例如,20000
uiautomator2ServerLaunchTimeout 用於等待uiAutomator 2服務器啟動的超時(毫秒)。默認為20000 例如,20000
userProfile 如果提供了該值,則強制用戶配置文件作為給定參數。應該是整數。 例如,11

3、僅限iOS

這些功能僅使用在UIAutomation驅動程序.

能力 描述 價值
calendarFormat (僅限SIM)為IOS模擬器設置日歷格式 G.gregorian
bundleId 正在測試的應用程序的包ID。對於在真正的設備上啟動應用程序或使用測試啟動時需要綁定ID的其他上限,都很有用。要在使用包ID的實際設備上運行測試,可以省略“app”功能,但必須提供“UDID”。 G.io.appium.TestApp
udid 連接物理設備的唯一設備標識符 G.1ae203187fc012g
launchTimeout 在ms中等待工具的時間,然后假設它掛起,並在會議上失敗。 G.20000
locationServicesEnabled (僅限SIM)強制定位服務打開或關閉。默認值是保持當前sim設置。 truefalse
locationServicesAuthorized (僅使用SIM)通過plist將位置服務設置為已授權或未授權的應用程序,這樣位置服務警報就不會彈出。默認值是保持當前sim設置。注意,如果使用此設置,還必須使用bundleId能夠發送您的應用程序的捆綁ID。 truefalse
autoAcceptAlerts 如果所有IOS警報彈出,則自動接受它們。這包括隱私訪問權限警報(例如,位置、聯系人、照片)。默認是假的。 truefalse
autoDismissAlerts 如果所有IOS警報彈出,則自動關閉它們。這包括隱私訪問權限警報(例如,位置、聯系人、照片)。默認是假的。 truefalse
nativeInstrumentsLib 使用本機工具庫(即立即禁用儀器). truefalse
nativeWebTap 在Safari中啟用“真正”的、非基於javascript的web點擊。違約:false。警告:取決於視口大小/比率;這可能無法准確地點擊元素。 truefalse
safariInitialUrl 初始Safari url,默認值是本地歡迎頁面。 G.https://www.github.com
safariAllowPopups (僅限SIM)允許javascript在Safari中打開新窗口。默認保持當前sim設置 truefalse
safariIgnoreFraudWarning (僅限SIM)防止Safari顯示欺詐性網站警告。默認值保持當前sim設置。 truefalse
safariOpenLinksInBackground (僅限SIM)Safari是否應該允許在新窗口中打開鏈接。默認值保持當前sim設置。 truefalse
keepKeyChains (僅限SIM)在Appium會話啟動/完成時是否保留密鑰鏈(庫/密鑰鏈) truefalse
localizableStringsDir 查找可本地化字符串的位置。違約en.lproj en.lproj
processArguments 使用儀器傳遞給AUT的參數 例如,-myflag
interKeyDelay 輸入時發送給元素的擊鍵之間的延遲,以ms為單位。 例如,100
showIOSLog 是否顯示從Appium日志中的設備中捕獲的任何日志。違約false truefalse
sendKeyStrategy 用於在測試字段中鍵入測試的策略。模擬器默認設置:oneByOne。真正的設備默認:grouped oneByOne, groupedsetValue
screenshotWaitTimeout 以秒為單位的最大超時時間,以等待屏幕截圖的生成。違約:10 例如,5
waitForAppScript 用於確定應用程序是否已經啟動的IOS自動化腳本,默認情況下,系統會等待頁面源不為空。結果必須是布爾值。 G.true;, target.elements().length > 0;, $.delay(5000); true;
webviewConnectRetries 將連接消息發送到遠程調試器、獲取webview的次數。違約:8 例如,12
appName 正在測試的應用程序的顯示名稱。用於在iOS 9+中自動回退應用程序。 例如,UICatalog
customSSLCert (僅限SIM)向IOS模擬器添加SSL證書。 G. -----BEGIN CERTIFICATE-----MIIFWjCCBEKg... -----END CERTIFICATE-----
webkitResponseTimeout (僅限於真正的設備)在Safari會話中設置等待WebKit響應的時間(Ms)。默認為5000 例如,10000
remoteDebugProxy (僅限SIM,<=11.2)如果設置,Appium將通過本地端口(僅限SIM,<=11.2)上的代理或此Unix套接字上的代理(SIM僅>=11.3)發送和接收遠程調試消息,而不是直接與IOS遠程調試器通信。 G.12000"/tmp/my.proxy.socket"
enableAsyncExecuteFromHttps 允許模擬器使用HTTPS在頁面上執行異步JavaScript的功能。默認為false truefalse
skipLogCapture 跳過以開始捕獲日志,如崩潰、系統、Safari控制台和Safari網絡。它可以提高網絡等性能。與日志相關的命令將無法工作。默認為false. truefalse
webkitDebugProxyPort (僅限於真正的設備)端口ios-webkit-debug-proxy在真正的設備測試中連接。默認值是27753. 12021
fullContextList 對象的上下文的詳細信息。獲取可用上下文命令。如果啟用了此功能,則返回上下文列表中的每個項將另外包括WebView標題、完整URL和包標識符。默認為false. truefalse


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM