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