1、啓動appium_desktop server ,默認端口4723
2、調用/wd/hub/session 根據DesiredCapabilities設置的所有參數值,創建session,該session用於接下來與客戶端保持通信使用. {{url}} 爲全局變量, http://127.0.0.1:4723
post {{url}}/wd/hub/session,
{
"desiredCapabilities": {
"unicodeKeyboard": "true",
"autoGrantPermissions": "true",
"automationName": "UiAutomator2",
"resetKeyboard": "true",
"noReset": "true",
"appActivity": "modules.guide.LoadingActivity",
"newCommandTimeout": "6000",
"deviceName": "449e6ab6",
"appPackage": "com.paic.zhifu.wallet.activity",
"platformName": "Android",
"app": "/Users/lianglijuan/YQB_691_testing/case/6.9.1.apk"
}
}
3、獲取當前設備的API版本
4、檢查io.appium.settings是否安裝,
運行io.appium.setting這個包並進行一些設置(在Appium-Desktop的執行過程中設備在安裝完setting包有一個打開setting應用的步驟就是完成了這些設置)
5、安裝io.appium.settings/.UnicodeIME,並將手機默認輸入法設置爲UnicodeIME
6、檢查io.appium.uiautomator2.server是否安裝,得到的結果是已經安裝
如果沒有安裝,則安裝io.appium.uiautomator2.server、io.appium.uiautomator2.server.test兩個包對應的APK
7、安裝完之後,通過adb shell pm list instrumentation 命令檢查一下使用instrumentation執行測試的列表中有沒有該包,結果爲存在,
並完成appium服務的8200端口與設備6790端口轉發,簡單的說就是把Appium服務機器上的8200端口與設備端6790端口完成對接,接下來需要通過這個端口來通信
8、對要進行測試的apk進行檢查,發現手機上apk的版本大於要安裝的apk_version, 則不進行安裝
9、先關閉io.appium.uiautomator2.server.test這個包的應用
10、向設備端的appium_server發送一個獲取狀態的請求,確認在設備端的appium socket server是正確的,
注意這裏的8200端口,發送的請求通過appium-server所在機器上的8200端口轉發到設備端的6790端口
11、
12、發現UiAutomator2 沒有啓動待測應用,通過adb命令 自己啓動;
至此,創建session 的一個請求,就解析完成了;
下面開始進行一些列自動化動作的請求,比如點擊元素、點擊返回按鍵等等
13、點擊返回按鍵,調用 /wd/hub/session/b7f11c33-64d3-4752-8b1f-51c7dcd5b15f/appium/device/press_keycode
參數爲{"sessionId":"b7f11c33-64d3-4752-8b1f-51c7dcd5b15f","keycode":"3"}
14、點擊 //android.widget.TextView[@text='同意並繼續']這個元素
a、首先查找元素,調用/wd/hub/session/91810205-4e3c-4f5d-8c62-3486784a6f89/elements
傳入的參數爲{"using":"xpath","sessionId":"10705b50-1ead-4d92-9c32-6aaab180ebfa","value":"//android.widget.TextView[@text='同意並繼續']"}
返回結果爲{"element-6066-11e4-a52e-4f735466cecf":"4c2aedad-d368-4763-bdd3-09ff93fd18e9","ELEMENT":"4c2aedad-d368-4763-bdd3-09ff93fd18e9"}]
b、發送點擊元素的請求,將 上面查找到的請求返回的id ,作爲參數進行傳遞
/wd/hub/session/10705b50-1ead-4d92-9c32-6aaab180ebfa/element/4c2aedad-d368-4763-bdd3-09ff93fd18e9/click, 參數爲
{"sessionId":"10705b50-1ead-4d92-9c32-6aaab180ebfa","id":"4c2aedad-d368-4763-bdd3-09ff93fd18e9"}
一個是sessionID, 一個是剛剛查找到的元素的id。
15、發送截屏的請求:/wd/hub/session/10705b50-1ead-4d92-9c32-6aaab180ebfa/screenshot
該請求是一個get請求
16、重置應用的請求:
POST /wd/hub/session/7326abb1-57bb-4bb7-ae72-3d9ffc31c961/appium/app/reset
{"sessionId":"7326abb1-57bb-4bb7-ae72-3d9ffc31c961"}
17、輸入框輸入的請求:
POST /wd/hub/session/f6f201a8-cf98-4065-afa6-6420c770af5d/element/9afaa285-c193-4eb6-9bdd-a4e9aea47a3f/value
{"text":"112345678967","sessionId":"f6f201a8-cf98-4065-afa6-6420c770af5d","id":"9afaa285-c193-4eb6-9bdd-a4e9aea47a3f","value":["1","2","3","4","5","6","7","8","9","6","7"]}
18、
在不使用腳本進行自動化測試的情況下,我們可以直接用postman調用appium的接口進行一系列自動化的操作,例如
可以直接使用postman調用screenshot 請求,對手機進行截屏