Appium自動化測試基礎知識—— DesiredCapabilities

一、DesiredCapabilities的作用

    Desired Capabilities負責啓動服務端時的參數設置,它本質上是一個key value的對象,它告訴appium server這樣一些事情,比如:

  •     測試的終端啓動瀏覽器還是啓動移動設備?
  •     是啓動Andorid還是啓動iOS?
  •     啓動android時,app的package是什麼?
  •     啓動android時,app的activity是什麼?

二、初始化示例

import io.appium.java_client.AppiumDriver;

public class AndroidSetup {
    protected AppiumDriver driver;

    protected void prepareAndroidForAppium() throws MalformedURLException {
        DesiredCapabilities capabilities = new DesiredCapabilities();
        capabilities.setCapability("appium-version", "1.0");
        capabilities.setCapability("platformName", "Android");
        capabilities.setCapability("platformVersion", "7.0");
        capabilities.setCapability("deviceName", "Nexus");
        capabilities.setCapability("app",
                "/Users/tangbin/Downloads/weaver/Appium/apps/demo.apk");
        capabilities.setCapability("appPackage", "com.atangsir.android");
        capabilities.setCapability("appActivity",
                "com.atangsir.android.SplashActivity");
        driver = new AppiumDriver(new URL("http://127.0.0.1:4723/wd/hub"),
                capabilities);
    }
}

三、服務關鍵字

基本參數

參數描述實例
automationName自動化測試引擎Appium或 Selendroid
platformName手機操作系統iOSAndroid, 或 FirefoxOS
platformVersion手機操作系統版本如: 7.14.4;ios的 9.0
deviceName手機或模擬器設備名稱android的忽略,ios如iPhone Simulator
app.ipa .apk文件路徑比如/abs/path/to/my.apkhttp://myapp.com/app.ipa
browserName啓動手機瀏覽器iOS如:Safari,Android如:Chrome,Chromium,Browser
newCommandTimeout設置命令超時時間,單位:秒。比如 60
autoLaunchAppium是否需要自動安裝和啓動應用。默認值truetruefalse
language(Sim/Emu-only) 設定模擬器 ( simulator / emulator ) 的語言。如: fr
locale(Sim/Emu-only) 設定模擬器 ( simulator / emulator ) 的區域設置。如: fr_CA
udidios真機的唯一設備標識如: 1ae203187fc012g
orientation設置橫屏或豎屏LANDSCAPE (橫向) 或 PORTRAIT (縱向)
autoWebview直接轉換到 WebView 上下文。 默認值 falsetruefalse
noReset不要在會話前重置應用狀態。默認值falsetruefalse
fullReset(iOS) 刪除整個模擬器目錄。(Android)通過卸載默認值 falsetruefalse

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;

https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/caps.md


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章