1. 程式人生 > >Appium+python自動化(三十五)- 命令啟動appium之 appium服務命令列引數(超詳解)

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

簡介

前邊介紹的都是通過按鈕點選啟動按鈕來啟動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,可以加巨集哥的微信拉你進群,請備註:進群)