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,可以加巨集哥的微信拉你進群,請備註:進群)