Appium_desktop日誌分析

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 請求,對手機進行截屏

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章