1.Appium是什么?
Appium是一個跨平台移動端自動化測試工具,可以便捷的為ios和Android平台創建自動化測試用例。
模擬app內部各種操作,點擊、滑動、文本輸入等,手工操作的動作appium都能完成。
ios設備:appium使用UIAutomation實現驅動
Android設備:使用UIAutomator和Selendroid來實現驅動。
2.啟動Appium,監聽4723端口。

3.配置Android手機通過數據線和運行的Appium的PC相連,打開手機端USB調試功能確保可以連接到手機。
adb在上一節已經配置安裝完成(參照上一節)。
cmd輸入adb命令測試連接情況: adb devices -l (連接成功如下圖所示,我用的是小米5x)
這里獲取的連接信息配置要用到。
4.Appium內置驅動打開App,點擊Appium 中搜索符號,如圖進入配置界面配置Desired Capabilities 參數
platformName:平台名稱
deviceName:設備名稱
appPackage:app程序包名
appActivity:入口Activity名,通常以.開頭
5.點擊保存
6.點擊 start session,就可以啟動Android 手機上的微信app並進入啟動頁面,但是我這里出現了一個問題報了一個錯誤。
appium界面情況: [Appium] Welcome to Appium v1.9.1 [Appium] Appium REST http interface listener started on 0.0.0.0:4723 [HTTP] --> GET /wd/hub/sessions [HTTP] {} [GENERIC] Calling AppiumDriver.getSessions() with args: [] [GENERIC] Responding to client with driver.getSessions() result: [] [HTTP] <-- GET /wd/hub/sessions 200 11 ms - 40 [HTTP] [HTTP] --> GET /wd/hub/sessions [HTTP] {} [GENERIC] Calling AppiumDriver.getSessions() with args: [] [GENERIC] Responding to client with driver.getSessions() result: [] [HTTP] <-- GET /wd/hub/sessions 200 3 ms - 40 [HTTP] [HTTP] --> POST /wd/hub/session [HTTP] {"desiredCapabilities":{"appActivity":".ui.LauncherUI","appPackage":"com.tencent.mm","deviceName":"MI_5X","platformName":"Android","newCommandTimeout":0,"connectHardwareKeyboard":true}} [MJSONWP] Calling AppiumDriver.createSession() with args: [{"appActivity":".ui.LauncherUI","appPackage":"com.tencent.mm","deviceName":"MI_5X","platformName":"Android","newCommandTimeout":0,"connectHardwareKeyboard":true},null,null] [BaseDriver] Event 'newSessionRequested' logged at 1541407442906 (16:44:02 GMT+0800 (中國標准時間)) [Appium] Creating new AndroidDriver (v4.1.1) session [Appium] Capabilities: [Appium] appActivity: .ui.LauncherUI [Appium] appPackage: com.tencent.mm [Appium] deviceName: MI_5X [Appium] platformName: Android [Appium] newCommandTimeout: 0 [Appium] connectHardwareKeyboard: true [BaseDriver] Creating session with MJSONWP desired capabilities: {"appActivity":".ui.Launche... [BaseDriver] The following capabilities were provided, but are not recognized by appium: connectHardwareKeyboard. [BaseDriver] Session created with session id: 1ec2b612-50a3-4a7c-b830-6cdd026cf0e4 [AndroidDriver] Shutting down Android driver [AndroidDriver] Called deleteSession but bootstrap wasn't active [BaseDriver] Event 'newSessionStarted' logged at 1541407443065 (16:44:03 GMT+0800 (中國標准時間)) [MJSONWP] Encountered internal error running command: Error: Command 'java' not found. Is it installed? [MJSONWP] at ChildProcess. (C:\Users\vm510\AppData\Local\Programs\Appium\resources\app\node_modules\appium\node_modules\teen_process\lib\exec.js:39:14) [MJSONWP] at ChildProcess.emit (events.js:182:13) [MJSONWP] at Process.ChildProcess._handle.onexit (internal/child_process.js:235:12) [MJSONWP] at onErrorNT (internal/child_process.js:406:16) [MJSONWP] at process._tickCallback (internal/process/next_tick.js:63:19) [HTTP] <-- POST /wd/hub/session 500 164 ms - 179 [HTTP] [HTTP] --> DELETE /wd/hub/session [HTTP] {} [HTTP] No route found. Setting content type to 'text/plain' [HTTP] <-- DELETE /wd/hub/session 404 8 ms - 57 [HTTP] [HTTP] --> POST /wd/hub/session [HTTP] {"desiredCapabilities":{"appActivity":".ui.LauncherUI","appPackage":"com.tencent.mm","deviceName":"MI_5X","platformName":"Android","newCommandTimeout":0,"connectHardwareKeyboard":true}} [MJSONWP] Calling AppiumDriver.createSession() with args: [{"appActivity":".ui.LauncherUI","appPackage":"com.tencent.mm","deviceName":"MI_5X","platformName":"Android","newCommandTimeout":0,"connectHardwareKeyboard":true},null,null] [BaseDriver] Event 'newSessionRequested' logged at 1541407449259 (16:44:09 GMT+0800 (中國標准時間)) [Appium] Creating new AndroidDriver (v4.1.1) session [Appium] Capabilities: [Appium] appActivity: .ui.LauncherUI [Appium] appPackage: com.tencent.mm [Appium] deviceName: MI_5X [Appium] platformName: Android [Appium] newCommandTimeout: 0 [Appium] connectHardwareKeyboard: true [BaseDriver] Creating session with MJSONWP desired capabilities: {"appActivity":".ui.Launche... [BaseDriver] The following capabilities were provided, but are not recognized by appium: connectHardwareKeyboard. [BaseDriver] Session created with session id: aad85d91-1bb2-465e-8e3c-e0cd1a4c12c4 [AndroidDriver] Shutting down Android driver [AndroidDriver] Called deleteSession but bootstrap wasn't active [BaseDriver] Event 'newSessionStarted' logged at 1541407449271 (16:44:09 GMT+0800 (中國標准時間)) [MJSONWP] Encountered internal error running command: Error: Command 'java' not found. Is it installed? [MJSONWP] at ChildProcess. (C:\Users\vm510\AppData\Local\Programs\Appium\resources\app\node_modules\appium\node_modules\teen_process\lib\exec.js:39:14) [MJSONWP] at ChildProcess.emit (events.js:182:13) [MJSONWP] at Process.ChildProcess._handle.onexit (internal/child_process.js:235:12) [MJSONWP] at onErrorNT (internal/child_process.js:406:16) [MJSONWP] at process._tickCallback (internal/process/next_tick.js:63:19) [HTTP] <-- POST /wd/hub/session 500 16 ms - 179 [HTTP] [HTTP] --> DELETE /wd/hub/session [HTTP] {} [HTTP] No route found. Setting content type to 'text/plain' [HTTP] <-- DELETE /wd/hub/session 404 1 ms - 57 [HTTP] [HTTP] --> POST /wd/hub/session [HTTP] {"desiredCapabilities":{"appActivity":".ui.LauncherUI","appPackage":"com.tencent.mm","deviceName":"MI_5X","platformName":"Android","newCommandTimeout":0,"connectHardwareKeyboard":true}} [MJSONWP] Calling AppiumDriver.createSession() with args: [{"appActivity":".ui.LauncherUI","appPackage":"com.tencent.mm","deviceName":"MI_5X","platformName":"Android","newCommandTimeout":0,"connectHardwareKeyboard":true},null,null] [BaseDriver] Event 'newSessionRequested' logged at 1541407492319 (16:44:52 GMT+0800 (中國標准時間)) [Appium] Creating new AndroidDriver (v4.1.1) session [Appium] Capabilities: [Appium] appActivity: .ui.LauncherUI [Appium] appPackage: com.tencent.mm [Appium] deviceName: MI_5X [Appium] platformName: Android [Appium] newCommandTimeout: 0 [Appium] connectHardwareKeyboard: true [BaseDriver] Creating session with MJSONWP desired capabilities: {"appActivity":".ui.Launche... [BaseDriver] The following capabilities were provided, but are not recognized by appium: connectHardwareKeyboard. [BaseDriver] Session created with session id: 1eef1933-beb8-40d3-bf1f-d58fa8b266bf [AndroidDriver] Shutting down Android driver [AndroidDriver] Called deleteSession but bootstrap wasn't active [BaseDriver] Event 'newSessionStarted' logged at 1541407492348 (16:44:52 GMT+0800 (中國標准時間)) [MJSONWP] Encountered internal error running command: Error: Command 'java' not found. Is it installed? [MJSONWP] at ChildProcess. (C:\Users\vm510\AppData\Local\Programs\Appium\resources\app\node_modules\appium\node_modules\teen_process\lib\exec.js:39:14) [MJSONWP] at ChildProcess.emit (events.js:182:13) [MJSONWP] at Process.ChildProcess._handle.onexit (internal/child_process.js:235:12) [MJSONWP] at onErrorNT (internal/child_process.js:406:16) [MJSONWP] at process._tickCallback (internal/process/next_tick.js:63:19) [HTTP] <-- POST /wd/hub/session 500 31 ms - 179 [HTTP] [HTTP] --> DELETE /wd/hub/session [HTTP] {} [HTTP] No route found. Setting content type to 'text/plain' [HTTP] <-- DELETE /wd/hub/session 404 2 ms - 57 [HTTP] [HTTP] --> POST /wd/hub/session [HTTP] {"desiredCapabilities":{"appActivity":".ui.LauncherUI","appPackage":"com.tencent.mm","deviceName":"MI_5X","platformName":"Android","newCommandTimeout":0,"connectHardwareKeyboard":true}} [MJSONWP] Calling AppiumDriver.createSession() with args: [{"appActivity":".ui.LauncherUI","appPackage":"com.tencent.mm","deviceName":"MI_5X","platformName":"Android","newCommandTimeout":0,"connectHardwareKeyboard":true},null,null] [BaseDriver] Event 'newSessionRequested' logged at 1541407700506 (16:48:20 GMT+0800 (中國標准時間)) [Appium] Creating new AndroidDriver (v4.1.1) session [Appium] Capabilities: [Appium] appActivity: .ui.LauncherUI [Appium] appPackage: com.tencent.mm [Appium] deviceName: MI_5X [Appium] platformName: Android [Appium] newCommandTimeout: 0 [Appium] connectHardwareKeyboard: true [BaseDriver] Creating session with MJSONWP desired capabilities: {"appActivity":".ui.Launche... [BaseDriver] The following capabilities were provided, but are not recognized by appium: connectHardwareKeyboard. [BaseDriver] Session created with session id: 7de96b9a-4680-420e-bdee-d8c9619f12b6 [AndroidDriver] Shutting down Android driver [AndroidDriver] Called deleteSession but bootstrap wasn't active [BaseDriver] Event 'newSessionStarted' logged at 1541407700532 (16:48:20 GMT+0800 (中國標准時間)) [MJSONWP] Encountered internal error running command: Error: Command 'java' not found. Is it installed? [MJSONWP] at ChildProcess. (C:\Users\vm510\AppData\Local\Programs\Appium\resources\app\node_modules\appium\node_modules\teen_process\lib\exec.js:39:14) [MJSONWP] at ChildProcess.emit (events.js:182:13) [MJSONWP] at Process.ChildProcess._handle.onexit (internal/child_process.js:235:12) [MJSONWP] at onErrorNT (internal/child_process.js:406:16) [MJSONWP] at process._tickCallback (internal/process/next_tick.js:63:19) [HTTP] <-- POST /wd/hub/session 500 30 ms - 179 [HTTP] [HTTP] --> DELETE /wd/hub/session [HTTP] {} [HTTP] No route found. Setting content type to 'text/plain' [HTTP] <-- DELETE /wd/hub/session 404 1 ms - 57 [HTTP] [HTTP] --> POST /wd/hub/session [HTTP] {"desiredCapabilities":{"appActivity":".ui.LauncherUI","appPackage":"com.tencent.mm","deviceName":"MI_5X","platformName":"Android","newCommandTimeout":0,"connectHardwareKeyboard":true}} [MJSONWP] Calling AppiumDriver.createSession() with args: [{"appActivity":".ui.LauncherUI","appPackage":"com.tencent.mm","deviceName":"MI_5X","platformName":"Android","newCommandTimeout":0,"connectHardwareKeyboard":true},null,null] [BaseDriver] Event 'newSessionRequested' logged at 1541407780059 (16:49:40 GMT+0800 (中國標准時間)) [Appium] Creating new AndroidDriver (v4.1.1) session [Appium] Capabilities: [Appium] appActivity: .ui.LauncherUI [Appium] appPackage: com.tencent.mm [Appium] deviceName: MI_5X [Appium] platformName: Android [Appium] newCommandTimeout: 0 [Appium] connectHardwareKeyboard: true [BaseDriver] Creating session with MJSONWP desired capabilities: {"appActivity":".ui.Launche... [BaseDriver] The following capabilities were provided, but are not recognized by appium: connectHardwareKeyboard. [BaseDriver] Session created with session id: a53170dd-299c-4767-81f8-b6999ef40638 [AndroidDriver] Shutting down Android driver [AndroidDriver] Called deleteSession but bootstrap wasn't active [BaseDriver] Event 'newSessionStarted' logged at 1541407780083 (16:49:40 GMT+0800 (中國標准時間)) [MJSONWP] Encountered internal error running command: Error: Command 'java' not found. Is it installed? [MJSONWP] at ChildProcess. (C:\Users\vm510\AppData\Local\Programs\Appium\resources\app\node_modules\appium\node_modules\teen_process\lib\exec.js:39:14) [MJSONWP] at ChildProcess.emit (events.js:182:13) [MJSONWP] at Process.ChildProcess._handle.onexit (internal/child_process.js:235:12) [MJSONWP] at onErrorNT (internal/child_process.js:406:16) [MJSONWP] at process._tickCallback (internal/process/next_tick.js:63:19) [HTTP] <-- POST /wd/hub/session 500 27 ms - 179 [HTTP] [HTTP] --> DELETE /wd/hub/session [HTTP] {} [HTTP] No route found. Setting content type to 'text/plain' [HTTP] <-- DELETE /wd/hub/session 404 1 ms - 57 [HTTP] [HTTP] --> POST /wd/hub/session [HTTP] {"desiredCapabilities":{"appActivity":".ui.LauncherUI","appPackage":"com.tencent.mm","deviceName":"MI_5X","platformName":"Android","newCommandTimeout":0,"connectHardwareKeyboard":true}} [MJSONWP] Calling AppiumDriver.createSession() with args: [{"appActivity":".ui.LauncherUI","appPackage":"com.tencent.mm","deviceName":"MI_5X","platformName":"Android","newCommandTimeout":0,"connectHardwareKeyboard":true},null,null] [BaseDriver] Event 'newSessionRequested' logged at 1541408028828 (16:53:48 GMT+0800 (中國標准時間)) [Appium] Creating new AndroidDriver (v4.1.1) session [Appium] Capabilities: [Appium] appActivity: .ui.LauncherUI [Appium] appPackage: com.tencent.mm [Appium] deviceName: MI_5X [Appium] platformName: Android [Appium] newCommandTimeout: 0 [Appium] connectHardwareKeyboard: true [BaseDriver] Creating session with MJSONWP desired capabilities: {"appActivity":".ui.Launche... [BaseDriver] The following capabilities were provided, but are not recognized by appium: connectHardwareKeyboard. [BaseDriver] Session created with session id: 26f601d9-0b75-4b0a-8f11-2a43dfc53112 [AndroidDriver] Shutting down Android driver [AndroidDriver] Called deleteSession but bootstrap wasn't active [BaseDriver] Event 'newSessionStarted' logged at 1541408028848 (16:53:48 GMT+0800 (中國標准時間)) [MJSONWP] Encountered internal error running command: Error: Command 'java' not found. Is it installed? [MJSONWP] at ChildProcess. (C:\Users\vm510\AppData\Local\Programs\Appium\resources\app\node_modules\appium\node_modules\teen_process\lib\exec.js:39:14) [MJSONWP] at ChildProcess.emit (events.js:182:13) [MJSONWP] at Process.ChildProcess._handle.onexit (internal/child_process.js:235:12) [MJSONWP] at onErrorNT (internal/child_process.js:406:16) [MJSONWP] at process._tickCallback (internal/process/next_tick.js:63:19) [HTTP] <-- POST /wd/hub/session 500 23 ms - 179 [HTTP] [HTTP] --> DELETE /wd/hub/session [HTTP] {} [HTTP] No route found. Setting content type to 'text/plain' [HTTP] <-- DELETE /wd/hub/session 404 1 ms - 57 [HTTP] [HTTP] --> GET /wd/hub/sessions [HTTP] {} [GENERIC] Calling AppiumDriver.getSessions() with args: [] [GENERIC] Responding to client with driver.getSessions() result: [] [HTTP] <-- GET /wd/hub/sessions 200 2 ms - 40 [HTTP] [HTTP] --> GET /wd/hub/sessions [HTTP] {} [GENERIC] Calling AppiumDriver.getSessions() with args: [] [GENERIC] Responding to client with driver.getSessions() result: [] [HTTP] <-- GET /wd/hub/sessions 200 1 ms - 40 [HTTP]