簡介
Appium Desired Capabilities官方文檔:http://appium.io/docs/en/writing-running-appium/caps/
或者在gitHub上檢視:https://github.com/appium/appium/blob/master/docs/cn/writing-running-appium/caps.md
Desired Capabilities是一組設定的鍵值對的集合,是對Appium會話進行配置,傳達給伺服器所需自動化的平台和應用程式,通知Appium Server建立所需要的Session資訊
例:
{
"platformName": "iOS",
"platformVersion": "11.0",
"deviceName": "iPhone 7",
"automationName": "XCUITest",
"app": "/path/to/my.app"}
這組設定就是表明運作平台IOS系統,平台版本11.0,裝置名稱iPhone7,使用ios的XCITest驅動運作程式/path/to/my.app
appium-desktop 中設定
點選【start server v xxx】啟動appium-desktop後點選右上角放大鏡圖示。

進入設定Desired Capabilities。配置Appium session,設定Capabilities,如下圖,啟動會話對app進行操作
腳本中進行設定
如下腳本:
from appium import webdriver
caps = {}
caps["platformName"] = "Android"
caps["deviceName"] = "32"
caps["appPackage"] = "com.tencent.qqlite"
caps["appActivity"] = "com.tencent.mobileqq.activity.RegisterGuideActivity"
driver = webdriver.Remote("http://localhost:4723/wd/hub", caps)
el1 = driver.find_element_by_id("com.tencent.qqlite:id/btn_login")
el1.click()
el2 = driver.find_element_by_accessibility_id("請輸入QQ号碼或手機或郵箱")
el2.send_keys("xxxxxxxxxx")
el3 = driver.find_element_by_accessibility_id("請輸入密碼")
el3.send_keys("xxxxxxxxxxx")
el4 = driver.find_element_by_accessibility_id("登入QQ")
el4.click()
driver.quit()
Capability 參數
以下設定來源于gitHub:https://github.com/appium/appium/blob/master/docs/cn/writing-running-appium/caps.md
Appium 伺服器初始化參數(Capability)
公有
<expand_table>
鍵 | 描述 | 值 |
---|---|---|
| 自動化測試的引擎 | (預設)或者 |
| 使用的手機作業系統 | , , 或者 |
| 手機作業系統的版本 | 例如 |
| 使用的手機或模拟器類型 | , 等等.... 在 iOS 上,使用 Instruments 的 指令可傳回一個有效的裝置的清單。在 Andorid 上雖然這個參數目前已被忽略,但仍然需要添加上該參數 |
| 本地絕對路徑_或_遠端 http URL 所指向的一個安裝包( , ,或 檔案)。Appium 将其安裝到合适的裝置上。請注意,如果您指定了 和 參數(見下文),Android 則不需要此參數了。該參數也與 不相容。 | 或 |
| 做自動化時使用的浏覽器名字。如果是一個應用則隻需填寫個空的字元串 | 'Safari' 對應 iOS,'Chrome', 'Chromium', 或 'Browser' 則對應 Android |
| 用于用戶端在退出或者結束 session 之前,Appium 等待用戶端發送一條新指令所花費的時間(秒為機關) | |
| (Sim/Emu-only) 為模拟器設定語言 | |
| (Sim/Emu-only) 為模拟器設定所在區域 | |
| 連接配接真機的唯一裝置号 | |
| (Sim/Emu-only) 模拟器目前的方向 | |
| 直接轉換到 Webview 上下文(context)。預設值為 | |
| 在目前 session 下不會重置應用的狀态。預設值為 | |
| (iOS)删除所有的模拟器檔案夾。(Android) 要清除 app 裡的資料,請将應用解除安裝才能達到重置應用的效果。在 Android, 在 session 完成之後也會将應用解除安裝掉。預設值為 | |
Android 獨有
| Activity 的名字是指從你的包中所要啟動的 Android acticity。他通常需要再前面添加 (例如 使用 代替 ) | |
| 運作的 Android 應用的包名 | |
| 用于等待啟動的 Android Activity 名稱 | |
| 用于等待啟動的 Android 應用的包 | |
| 用于等待 appWaitActivity 啟動的逾時時間(以毫秒為機關)(預設值為 ) | |
| 用于等待模拟器或真機準備就緒的逾時時間 | |
| 用于執行測試的 instrumentation 類。 傳送 參數到如下指令 | |
| (僅适用于 Chrome 與 webview)開啟 Chromedriver 的性能日志。(預設值為 | |
| 用于等待裝置在啟動應用後準備就緒的逾時時間。以秒為機關。 | |
| 用于等待在裝置中安裝 apk 所花費的時間(以毫秒為機關)。預設值為 | |
| 用來連接配接 ADB 伺服器的端口(預設值為 | |
| 開發工具的 socket 名稱。隻有在被測應用是一個使用 Chromium 核心的浏覽器時才需要。socket 會被浏覽器打開,然後 Chromedriver 把它作為開發者工具來進行連接配接。 | |
| 被啟動 avd 的名字 | |
| 用于等待 avd 啟動并連接配接 ADB 的逾時時間(以毫秒為機關),預設值為 。 | |
| 用于等待 avd 完成啟動動畫的逾時時間(以毫秒為機關),預設值為 | |
| 啟動 avd 時使用的額外參數 | |
| 使用自定義的 keystore 給 apk 簽名,預設值為 | 或 |
| 自定義 keystore 的路徑, 預設路徑為 ~/.android/debug.keystore | |
| 自定義 keystore 的密碼 | |
| key 的别名 | |
| key 的密碼 | |
| webdriver 可執行檔案的絕對路徑(如果 Chromium 内嵌一個自己提供的 webdriver,則應使用他去替換掉 Appium 自帶的 chromedriver) | |
| 用于等待 Webview 上下文(context)激活的時間(以毫秒為機關)。預設值為 | |
| 用于啟動 activity 的 intent action(預設值為 | |
| 用于啟動 activity 的 intent category。(預設值為 | |
| 用于啟動 activity 的辨別(flags)(預設值為 | |
| 用于啟動 activity 的額外 intent 參數。請檢視 Intent 參數 | , 等等。 |
| 在使用 adb 啟動應用之前,不要終止被測應用的程序。如果被測應用是被其他鈎子(anchor)應用所建立的,設定該參數為 false 後,就允許鈎子(anchor)應用的程序在使用 adb 啟動被測應用期間仍然存在。換而言之,設定 為 後,我們在 的調用中不需要包含 辨別(flag)。忽略該 capability 或 設定為 的話,就需要包含 辨別(flag)。預設值為 | |
| 使用 Unicode 輸入法。 預設值為 | |
| 在設定了 關鍵字的 Unicode 測試結束後,重置輸入法到原有狀态。如果單獨使用,将會被忽略。預設值為 | |
| 跳過檢查和對應用進行 debug 簽名的步驟。僅适用于 UiAutomator,不适用于 selendroid。 預設值為 | |
| 調用 uiautomator 的函數 。由于 Accessibility 指令在忽略部分元素的情況下執行速度會加快,這個關鍵字能加快測試執行的速度。被忽略的元素将不能夠被找到,是以這個關鍵字同時也被實作成可以随時改變的 設定 ( settings )。 預設值為 | |
| 禁用 android 螢幕(watchers)。螢幕用于見識應用程式的無響應狀态(anr)和崩潰(crash),禁用會降低 Android 裝置或模拟器的 CPU 使用率。該 capability 僅在使用 UiAutomator 時有效,不适用于 selendroid,預設設定為 | |
| 允許對 ChromeDriver 傳 chromeOptions 的參數。了解更多資訊請查閱 chromeOptions | |
| 當移除非 ChromeDriver webview時,終止掉 ChromeDriver 的 session。預設設定為 | |
| 在 web 的上下文(context),使用原生(native)的方法去截圖,而不是用過代理的 ChromeDriver。預設值為 | |
| 在裝置中截圖被儲存的目錄名。預設值為 | |
| 讓Appium自動确定您的應用需要哪些權限,并在安裝時将其授予應用。預設設定為 | |
iOS 獨有
| (僅支援模拟器) 為iOS的模拟器設定月曆格式 | |
| 被測應用的 bundle ID 。用于在真實裝置中啟動測試,也用于使用其他需要 bundle ID 的關鍵字啟動測試。在使用 bundle ID 在真實裝置上執行測試時,你可以不提供 關鍵字,但你必須提供 。 | |
| 連接配接的真實裝置的唯一裝置編号 (Unique device identifier) | |
| 以毫秒為機關,在 Appium 運作失敗之前設定一個等待 instruments 的時間 | |
| (僅支援模拟器)強制打開或關閉定位服務。預設值是保持目前模拟器的設定. | |
| (僅支援模拟器)通過修改 plist 檔案設定是否允許應用使用定位服務,進而避免定位服務的警告出現。預設值是保持目前模拟器的設定。請注意在使用這個關鍵字時,你同時需要使用 關鍵字來發送你的應用的 bundle ID。 | |
| 當警告彈出的時候,都會自動去點接受。包括隐私通路權限的警告(例如 定位,聯系人,照片)。預設值為 false。不支援基于 的測試。 | |
| 當警告彈出的時候,都會自動去點取消。包括隐私通路權限的警告(例如 定位,聯系人,照片)。預設值為 false。不支援基于 | |
| 使用原生 intruments 庫(即關閉 instruments-without-delay)。 | |
| (僅支援模拟器)在Safari中允許“真實的",非基于 javascript 的 web 點選 (tap) 。 預設值: 。注意:取決于 viewport 大小/比例, 點選操作不一定能精确地點中對應的元素。 | |
| (僅支援模拟器) (>= 8.1) 初始化 safari 的時使用的位址。預設是一個本地的歡迎頁面 | |
| (僅支援模拟器)允許 javascript 在 Safari 中建立新視窗。預設保持模拟器目前設定。 | |
| (僅支援模拟器)阻止 Safari 顯示此網站可能存在風險的警告。預設保持浏覽器目前設定。 | |
| (僅支援模拟器)Safari 是否允許連結在新視窗打開。預設保持浏覽器目前設定。 | |
| (僅支援模拟器)當 Appium 會話開始/結束時是否保留存放密碼存放記錄 (keychains) 庫(Library)/鑰匙串(Keychains)) | |
| 從哪裡查找本地化字元串。預設值為 | |
| 通過 instruments 傳遞到 AUT 的參數 | |
| 以毫秒為機關,按下每一個按鍵之間的延遲時間 | |
| 是否在 Appium 的日志中顯示裝置的日志。預設值為 | |
| 輸入文字到文字框的政策。模拟器預設值: (一個接着一個)。真實裝置預設值: (分組輸入) | |
| 以秒為機關,生成螢幕截圖的最長等待時間。預設值為:10 | |
| 用于判斷 "應用是否被啟動” 的 iOS 自動化腳本代碼。預設情況下系統等待直到頁面内容非空。結果必須是布爾類型。 | |
| 用于擷取 webview 失敗時,發送連接配接資訊到遠端調試器的次數。預設次數為: | |
| 被測應用的名字。 用于支援 iOS 9 以上系統的應用的自動化。 | |
| (Sim/Emu-only) 給模拟器添加一個 SSL 證書。 | 例如 |
使用 XCUITest(iOS 獨有)
| 将會傳送到 WebDriverAgent 的程序參數與環境 | |
| 如果這個值被指定了,Mac 主機就會使用這個端口,通過 USB 發送資料到 iOS 裝置中。預設的端口與 iOS 裝置中 WDA 的端口号是一緻的。 | |
| 是否顯示運作測試時 Xcode 的輸出日志,如果值設定為 ,則會在啟動的時候産生大量的額外日志。預設設定為 | |
| 安裝應用程式與啟動 WebDriverAgent 之間停止的間隔時間(以毫秒為機關),特别适用于體積較大的包。預設是設定為 | |
| 一個可選的 Xcode 可配置檔案的完整路徑,用于指定在真機上運作 WebDriverAgent 的個人身份或者團隊身份的代碼簽名。 | |
| 從系統的 keychain 中導出私有開發秘鑰的完整路徑。在真機測試時與 配合使用。 | |
| 在 中指定 keychain 的解鎖密碼。 | |
| 模拟器縮放因子。這對于預設分辨率是大于實際分辨的模拟器來說非常有用。是以,你不用上下滑動模拟器的螢幕就能看到所有模拟器顯示的内容了。 | 可接受的值為: 。 這些值都應該是一個字元串 |
| 設定 WebDriverAgent 項目中的 DerivedData 檔案夾的權限為 。為了防止 XCTest 架構産生大量無用的截屏與日志,該設定是非常必要的,因為這是不可能通過 Apple 提供的接口去關閉的。 | 設定 capabilitity 為 将會設定 Posix 的檔案夾的權限為 ,設定為 則會将權限重置回 |
| 若提供了 URL,Appium 将在這 URL 上連接配接現有的 WebDriverAgent 執行個體,而不是重新啟動一個。 | |
| 若設定為 ,則直接解除安裝裝置上現存的所有 WebDriverAgent 用戶端。在某些情況,該做法可以提高穩定性。預設設定為 | |
| 等待 WebDriverAgent 可 ping 同的時間(以毫秒為機關)。預設設定為 60000ms。 | |
| ,則允許在 iOS 模拟器上通路月曆。若設定為 ,則不被允許。否則,月曆的 authorizationStatus 會保持不變。 | - |
You.i 引擎獨有
youiEngineAppAddress | 正在運作的應用的裝置的 IP 位址。使用 作為模拟位址。使用 作為模拟器位址。使用裝置的 IP 位址作為真機的 IP。 | |
WinAppDriver 獨有
| 運作測試時所在的平台 | |
| 運作測試時所使用裝置的名字 | |
| 被測 windows 應用的 appID 或被測的 .exe 檔案的路徑。 查閱該文檔可了解更多查找 appID 的詳細方法。 | |