Appium+python自動化(三十五)- 命令啟動appium之 appium服務命令行參數(超詳解)

  • 2019 年 10 月 3 日
  • 筆記

簡介

前邊介紹的都是通過按鈕點擊啟動按鈕來啟動appium服務,有的小夥伴或者童鞋們乍一聽可能不信,或者會問如何通過命令行啟動appium服務呢?且聽宏哥一一道來。

一睹為快

其實相當的簡單,不看不知道,一看嚇一跳,直接在docs命令窗口輸入命令:appium 就可以運行起appium

這回小夥伴和童鞋們相信了吧,都啟動來了。

第一行:歡迎使用Appium,版本 v1.8.1

第二行:Appium啟動成功,啟動ip為默認的 0.0.0.0,埠為默認的 4723;默認即表示“不指定”的情況下;

默認埠4723。此時小夥伴或者童鞋們又會問,那麼如何修改埠了,不要急,聽宏哥慢慢地道來。

修改appium啟動埠

appium啟動默認埠4723,如果要指定埠,通過以下命令:appium -p 埠號,例圖修改埠4725

2個埠

指定埠的設備,輸入命令:appium -p 埠1 -bp 埠2 設備編號

appium -a 127.0.0.1 -p 4723 –session-override

-a 是指定監聽的ip(也可寫成 –address),後面“127.0.0.1”可以改為你需要的ip地址;

-p 是指定監聽的埠(也可寫成 –port),也可以修改為你需要的埠;

–session-override 是指覆蓋之前的session;

appium -a 127.0.0.1 -p 4727 -bp 4728 –chromedriver-port 9519 -U xiaomi –session-override

-bp 是連接Android設備bootstrap的埠號,默認是4724(也可寫成–bootstrap-port)

–chromedriver-port 是chromedriver運行需要指定的埠號,默認是9515

-U 是連接的設備名稱,如”adb devices”獲取的設備標識(也可寫成–udid)

伺服器標誌

所有的標誌都是可選的,但是有一些標誌需要組合在一起才能生效。

標誌 默認值 描述 例子
--shell null 進入 REPL 模式  
--localizable-strings-dir en.lproj IOS only: 定位 .strings所在目錄的相對路徑 --localizable-strings-dir en.lproj
--app null iOS: 基於模擬器編譯的 app 的絕對路徑或者設備目標的 bundle_id; Android: apk 文件的絕對路徑--app /abs/path/to/my.app  
--ipa null (IOS-only) .ipa 文件的絕對路徑 --ipa /abs/path/to/my.ipa
-U--udid null 連接物理設備的唯一設備標識符 --udid 1adsf-sdfas-asdf-123sdf
-a--address 0.0.0.0 監聽的 ip 地址 --address 0.0.0.0
-p--port 4723 監聽的埠 --port 4723
-ca--callback-address null 回調IP地址 (默認: 相同的IP地址) --callback-address 127.0.0.1
-cp--callback-port null 回調埠號 (默認: 相同的埠號) --callback-port 4723
-bp--bootstrap-port 4724 (Android-only) 連接設備的埠號 --bootstrap-port 4724
-k--keep-artifacts false 棄用,無效。trace資訊現在保留tmp目錄下,每次運行前會清除該目錄中的資訊。 也可以參考 –trace-dir 。  
-r--backend-retries 3 (iOS-only) 遇到 crash 或者 超時,Instrument 重新啟動的次數。 --backend-retries 3
--session-override false 允許 session 被覆蓋 (衝突的話)  
--full-reset false (iOS) 刪除整個模擬器目錄。 (Android) 通過卸載應用(而不是清除數據)重置應用狀態。在 Android 上,session 完成後也會刪除應用。  
--no-reset false session 之間不重置應用狀態 (iOS: 不刪除應用的 plist 文件; Android: 在創建一個新的 session 前不刪除應用。)  
-l--pre-launch false 在第一個 session 前,預啟動應用 (iOS 需要 –app 參數,Android 需要 –app-pkg 和 –app-activity)  
-lt--launch-timeout 90000 (iOS-only) 等待 Instruments 啟動的時間  
-g--log null 將日誌輸出到指定文件 --log /path/to/appium.log
--log-level debug 日誌級別; 默認 (console[:file]): debug[:debug] --log-level debug
--log-timestamp false 在終端輸出里顯示時間戳  
--local-timezone false 使用本地時間戳  
--log-no-colors false 不在終端輸出中顯示顏色  
-G--webhook null 同時發送日誌到 HTTP 監聽器 --webhook localhost:9876
--native-instruments-lib false (IOS-only) iOS 內建了一個怪異的不可能避免的延遲。我們在 Appium 里修復了它。如果你想用原來的,你可以使用這個參數。  
--app-pkg null (Android-only) 你要運行的apk的java包。 (例如, com.example.android.myApp) --app-pkg com.example.android.myApp
--app-activity null (Android-only) 打開應用時,啟動的 Activity 的名字(比如, MainActivity) --app-activity MainActivity
--app-wait-package false (Android-only) 你想等待的 Activity 的包名。(比如, com.example.android.myApp) --app-wait-package com.example.android.myApp
--app-wait-activity false (Android-only) 你想等待的 Activity 名字(比如, SplashActivity) --app-wait-activity SplashActivity
--android-coverage false (Android-only) 完全符合條件的 instrumentation 類。 作為命令 adb shell am instrument -e coverage true -w 的 -w 的參數 --android-coverage com.my.Pkg/com.my.Pkg.instrumentation.MyInstrumentation
--avd null (Android-only) 要啟動的 avd 的名字  
--avd-args null (Android-only) 添加額外的參數給要啟動avd --avd-args -no-snapshot-load
--device-ready-timeout 5 (Android-only) 等待設備準備好的時間,以秒為單位 --device-ready-timeout 5
--safari false (IOS-Only) 使用 Safari 應用  
--device-name null 待使用的移動設備名字 --device-name iPhone Retina (4-inch), Android Emulator
--platform-name null 移動平台的名稱: iOS, Android, or FirefoxOS --platform-name iOS
--platform-version null 移動平台的版本 --platform-version 7.1
--automation-name null 自動化工具的名稱: Appium or Selendroid --automation-name Appium
--browser-name null 移動瀏覽器的名稱: Safari or Chrome --browser-name Safari
--default-device-dd false (IOS-Simulator-only) 使用instruments自己啟動的默認模擬器  
--force-iphone false (IOS-only) 無論應用要用什麼模擬器,強制使用 iPhone 模擬器  
--force-ipad false (IOS-only) 無論應用要用什麼模擬器,強制使用 iPad 模擬器  
--language null iOS / Android 模擬器的語言 --language en
--locale null Locale for the iOS simulator / Android Emulator --locale en_US
--calendar-format null (IOS-only) iOS 模擬器的日曆格式 --calendar-format gregorian
--orientation null (IOS-only) 初始化請求時,使用 LANDSCAPE (橫屏) 或者 PORTRAIT (豎屏) --orientation LANDSCAPE
--tracetemplate null (IOS-only) 指定 Instruments 使用的 tracetemplate 文件 --tracetemplate /Users/me/Automation.tracetemplate
--show-sim-log false (IOS-only) 如果設置了, iOS 模擬器的日誌會寫到終端上來  
--show-ios-log false (IOS-only) 如果設置了, iOS 系統的日誌會寫到終端上來  
--nodeconfig null 指定 JSON 格式的配置文件 ,用來在 selenium grid 里註冊 appiumd --nodeconfig /abs/path/to/nodeconfig.json
-ra--robot-address 0.0.0.0 robot 的 ip 地址 --robot-address 0.0.0.0
-rp--robot-port -1 robot 的埠地址 --robot-port 4242
--selendroid-port 8080 用來和 Selendroid 交互的本地埠 --selendroid-port 8080
--chromedriver-port 9515 ChromeDriver運行的埠 --chromedriver-port 9515
--chromedriver-executable null ChromeDriver 可執行文件的完整路徑  
--use-keystore false (Android-only) 設置簽名 apk 的 keystore  
--keystore-path (Android-only) keystore 的路徑    
--keystore-password android (Android-only) keystore 的密碼  
--key-alias androiddebugkey (Android-only) Key 的別名  
--key-password android (Android-only) Key 的密碼  
--show-config false 列印 Appium 伺服器的配置資訊,然後退出  
--no-perms-check false 跳過Appium對是否可以讀/寫必要文件的檢查  
--command-timeout 60 默認所有會話的接收命令超時時間 (在超時時間內沒有接收到新命令,自動關閉會話)。 會被新的超時時間覆蓋  
--keep-keychains false (iOS) 當 Appium 啟動或者關閉的時候,是否保留 keychains (Library/Keychains)  
--strict-caps false 如果所選設備是appium不承認的有效設備,會導致會話失敗  
--isolate-sim-device false Xcode 6存在一個bug,那就是一些平台上如果其他模擬器設備先被刪除時某個特定的模擬器只能在沒有任何錯誤的情況下被建立。這個選項導致了Appium不得不刪除除了正在使用設備以外其他所有的設備。請注意這是永久性刪除,你可以使用simctl或xcode管理被Appium使用的設備類別。  
--tmp null 可以被Appium用來管理臨時文件的目錄(絕對路徑),比如存放需要移動的內置iOS應用程式。 默認的變數為 APPIUM_TMP_DIR ,在 *nix/Mac 為 /tmp 在windows上使用環境便令 TEMP 設定的目錄。  
--trace-dir null 用於保存iOS instruments trace的 appium 目錄,是絕對路徑, 默認為 /appium-instruments  
--intent-action android.intent.action.MAIN (Android-only) 用於啟動 activity 的intent action --intent-action android.intent.action.MAIN
--intent-category android.intent.category.LAUNCHER (Android-only) 用於啟動 activity 的intent category --intent-category android.intent.category.APP_CONTACTS
--intent-flags 0x10200000 (Android-only) 啟動 activity 的標誌 --intent-flags 0x10200000
--intent-args null (Android-only) 啟動 activity 時附帶額外的 intent 參數 --intent-args 0x10200000
--suppress-adb-kill-server false (Android-only) 如果被設定,阻止Appium殺掉adb實例。

實戰

  • -a : 默認服務地址 127.0.0.1
  • -p: 埠號 4730 (默認4723)
  • -U: udid ,android的udid就是adb devices查看到的前面那一串
  • –no-reset 不重置app 與desired_caps配置裡面的 {“noReset”: True,} 一個意思

cmd進入docs命令窗口輸入:

appium -a 127.0.0.1 -p 4730 -U emulator-5554 --no-reset

小結

 1.遇到的問題就是輸入appium報錯了,懵逼了,怎麼辦,不急一步一步解決它。

這個問題是由於安裝的Node的版本太高,而你安裝的appium版本較低造成,那麼解決辦法,就是要麼將Node的版本降低,要麼將appium版本升高即可。反正宏哥是這麼解決了,如果你遇到了如果你遇到了,可以試一試宏哥的方法,但是不能打包票哈。

2.好了,時間不早了,關於appium的服務命令行就到這裡吧!早點休息吧!

您的肯定就是我進步的動力。如果你感覺還不錯,就請鼓勵一下吧!記得點波 推薦 哦!!!(點擊右邊的小球即可!(^__^) 嘻嘻……)

 

       個人公眾號                                                             微信群 (微信群已滿100,可以加宏哥的微信拉你進群,請備註:進群)          

                                                                 

伺服器標誌

所有的標誌都是可選的,但是有一些標誌需要組合在一起才能生效。

標誌 默認值 描述 例子
--shell null 進入 REPL 模式  
--localizable-strings-dir en.lproj IOS only: 定位 .strings所在目錄的相對路徑 --localizable-strings-dir en.lproj
--app null iOS: 基於模擬器編譯的 app 的絕對路徑或者設備目標的 bundle_id; Android: apk 文件的絕對路徑--app /abs/path/to/my.app  
--ipa null (IOS-only) .ipa 文件的絕對路徑 --ipa /abs/path/to/my.ipa
-U--udid null 連接物理設備的唯一設備標識符 --udid 1adsf-sdfas-asdf-123sdf
-a--address 0.0.0.0 監聽的 ip 地址 --address 0.0.0.0
-p--port 4723 監聽的埠 --port 4723
-ca--callback-address null 回調IP地址 (默認: 相同的IP地址) --callback-address 127.0.0.1
-cp--callback-port null 回調埠號 (默認: 相同的埠號) --callback-port 4723
-bp--bootstrap-port 4724 (Android-only) 連接設備的埠號 --bootstrap-port 4724
-k--keep-artifacts false 棄用,無效。trace資訊現在保留tmp目錄下,每次運行前會清除該目錄中的資訊。 也可以參考 –trace-dir 。  
-r--backend-retries 3 (iOS-only) 遇到 crash 或者 超時,Instrument 重新啟動的次數。 --backend-retries 3
--session-override false 允許 session 被覆蓋 (衝突的話)  
--full-reset false (iOS) 刪除整個模擬器目錄。 (Android) 通過卸載應用(而不是清除數據)重置應用狀態。在 Android 上,session 完成後也會刪除應用。  
--no-reset false session 之間不重置應用狀態 (iOS: 不刪除應用的 plist 文件; Android: 在創建一個新的 session 前不刪除應用。)  
-l--pre-launch false 在第一個 session 前,預啟動應用 (iOS 需要 –app 參數,Android 需要 –app-pkg 和 –app-activity)  
-lt--launch-timeout 90000 (iOS-only) 等待 Instruments 啟動的時間  
-g--log null 將日誌輸出到指定文件 --log /path/to/appium.log
--log-level debug 日誌級別; 默認 (console[:file]): debug[:debug] --log-level debug
--log-timestamp false 在終端輸出里顯示時間戳  
--local-timezone false 使用本地時間戳  
--log-no-colors false 不在終端輸出中顯示顏色  
-G--webhook null 同時發送日誌到 HTTP 監聽器 --webhook localhost:9876
--native-instruments-lib false (IOS-only) iOS 內建了一個怪異的不可能避免的延遲。我們在 Appium 里修復了它。如果你想用原來的,你可以使用這個參數。  
--app-pkg null (Android-only) 你要運行的apk的java包。 (例如, com.example.android.myApp) --app-pkg com.example.android.myApp
--app-activity null (Android-only) 打開應用時,啟動的 Activity 的名字(比如, MainActivity) --app-activity MainActivity
--app-wait-package false (Android-only) 你想等待的 Activity 的包名。(比如, com.example.android.myApp) --app-wait-package com.example.android.myApp
--app-wait-activity false (Android-only) 你想等待的 Activity 名字(比如, SplashActivity) --app-wait-activity SplashActivity
--android-coverage false (Android-only) 完全符合條件的 instrumentation 類。 作為命令 adb shell am instrument -e coverage true -w 的 -w 的參數 --android-coverage com.my.Pkg/com.my.Pkg.instrumentation.MyInstrumentation
--avd null (Android-only) 要啟動的 avd 的名字  
--avd-args null (Android-only) 添加額外的參數給要啟動avd --avd-args -no-snapshot-load
--device-ready-timeout 5 (Android-only) 等待設備準備好的時間,以秒為單位 --device-ready-timeout 5
--safari false (IOS-Only) 使用 Safari 應用  
--device-name null 待使用的移動設備名字 --device-name iPhone Retina (4-inch), Android Emulator
--platform-name null 移動平台的名稱: iOS, Android, or FirefoxOS --platform-name iOS
--platform-version null 移動平台的版本 --platform-version 7.1
--automation-name null 自動化工具的名稱: Appium or Selendroid --automation-name Appium
--browser-name null 移動瀏覽器的名稱: Safari or Chrome --browser-name Safari
--default-device-dd false (IOS-Simulator-only) 使用instruments自己啟動的默認模擬器  
--force-iphone false (IOS-only) 無論應用要用什麼模擬器,強制使用 iPhone 模擬器  
--force-ipad false (IOS-only) 無論應用要用什麼模擬器,強制使用 iPad 模擬器  
--language null iOS / Android 模擬器的語言 --language en
--locale null Locale for the iOS simulator / Android Emulator --locale en_US
--calendar-format null (IOS-only) iOS 模擬器的日曆格式 --calendar-format gregorian
--orientation null (IOS-only) 初始化請求時,使用 LANDSCAPE (橫屏) 或者 PORTRAIT (豎屏) --orientation LANDSCAPE
--tracetemplate null (IOS-only) 指定 Instruments 使用的 tracetemplate 文件 --tracetemplate /Users/me/Automation.tracetemplate
--show-sim-log false (IOS-only) 如果設置了, iOS 模擬器的日誌會寫到終端上來  
--show-ios-log false (IOS-only) 如果設置了, iOS 系統的日誌會寫到終端上來  
--nodeconfig null 指定 JSON 格式的配置文件 ,用來在 selenium grid 里註冊 appiumd --nodeconfig /abs/path/to/nodeconfig.json
-ra--robot-address 0.0.0.0 robot 的 ip 地址 --robot-address 0.0.0.0
-rp--robot-port -1 robot 的埠地址 --robot-port 4242
--selendroid-port 8080 用來和 Selendroid 交互的本地埠 --selendroid-port 8080
--chromedriver-port 9515 ChromeDriver運行的埠 --chromedriver-port 9515
--chromedriver-executable null ChromeDriver 可執行文件的完整路徑  
--use-keystore false (Android-only) 設置簽名 apk 的 keystore  
--keystore-path (Android-only) keystore 的路徑    
--keystore-password android (Android-only) keystore 的密碼  
--key-alias androiddebugkey (Android-only) Key 的別名  
--key-password android (Android-only) Key 的密碼  
--show-config false 列印 Appium 伺服器的配置資訊,然後退出  
--no-perms-check false 跳過Appium對是否可以讀/寫必要文件的檢查  
--command-timeout 60 默認所有會話的接收命令超時時間 (在超時時間內沒有接收到新命令,自動關閉會話)。 會被新的超時時間覆蓋  
--keep-keychains false (iOS) 當 Appium 啟動或者關閉的時候,是否保留 keychains (Library/Keychains)  
--strict-caps false 如果所選設備是appium不承認的有效設備,會導致會話失敗  
--isolate-sim-device false Xcode 6存在一個bug,那就是一些平台上如果其他模擬器設備先被刪除時某個特定的模擬器只能在沒有任何錯誤的情況下被建立。這個選項導致了Appium不得不刪除除了正在使用設備以外其他所有的設備。請注意這是永久性刪除,你可以使用simctl或xcode管理被Appium使用的設備類別。  
--tmp null 可以被Appium用來管理臨時文件的目錄(絕對路徑),比如存放需要移動的內置iOS應用程式。 默認的變數為 APPIUM_TMP_DIR ,在 *nix/Mac 為 /tmp 在windows上使用環境便令 TEMP 設定的目錄。  
--trace-dir null 用於保存iOS instruments trace的 appium 目錄,是絕對路徑, 默認為 /appium-instruments  
--intent-action android.intent.action.MAIN (Android-only) 用於啟動 activity 的intent action --intent-action android.intent.action.MAIN
--intent-category android.intent.category.LAUNCHER (Android-only) 用於啟動 activity 的intent category --intent-category android.intent.category.APP_CONTACTS
--intent-flags 0x10200000 (Android-only) 啟動 activity 的標誌 --intent-flags 0x10200000
--intent-args null (Android-only) 啟動 activity 時附帶額外的 intent 參數 --intent-args 0x10200000
--suppress-adb-kill-server false (Android-only) 如果被設定,阻止Appium殺掉adb實例。