『與善仁』Appium基礎 — 15、使用Appium的第一個Demo
阿新 • • 發佈:2021-11-28
我們使用Python語言作為測試指令碼的編寫語言。
執行指令碼前提:
-
Android模擬器或者手機是開機狀態。
-
使用確保電腦和Android裝置進行了連結。
也就是使用ADB命令
adb connect
連結裝置,或者通過
adb devices
命令能夠檢視到裝置。 -
開啟Appium服務。
在Python的開發IDE中(PyCharm)中編寫指令碼如下:
""" 1.學習目標 掌握appium啟動手機方法 2.操作步驟 1-說明:明確驅動物件(操作物件) web自動化步驟: 1.指定啟動瀏覽器 2.輸入網址 3.繼續其他操作... APP自動化步驟: 要先傳遞如下資訊: 系統名稱: Android IOS 系統版本: 版本號 裝置名稱: 通過adb devices命令獲取 APP包名: 開啟哪個APP APP啟動名:進入APP哪個頁面 2-匯入appium中webdriver 3-新增啟動引數 裝置資訊 系統名稱: Android IOS 系統版本: 版本號 裝置名稱: adb devices APP資訊 APP包名: 開啟哪個APP APP啟動名:進入APP哪個頁面 4-啟動app webdriver.Remote() 5-操作app 6-關閉app 3.需求 啟動Android模擬器中的設定APP """ # 1.匯入appium import time from appium import webdriver # 2.新增啟動引數 # 就是Desired capabilities,是一個字典型別的物件。 desired_caps = { "platformName": "Android", # 系統名稱 "platformVersion": "7.1.2", # 系統版本 "deviceName": "127.0.0.1:21503", # 裝置名稱 "appPackage": "com.android.settings", # APP包名 "appActivity": ".Settings" # APP啟動名 } """ 說明: deviceName : cmd進入命令列終端 輸入adb connect 127.0.0.1:21503 連結逍遙模擬器 輸入adb devices 獲取裝置名稱 appPackage和appActivity獲取: 首先在虛擬機器中開啟設定 輸入命令adb shell dumpsys window windows | findstr mFocusedApp 在u0之後的就是包名和啟動名com.android.settings/.Settings """ """ 提示: platformName欄位中Android和android大小寫都可以。 deviceName 欄位,在測試Android手機時,隨意寫都可以,比如123 因為deviceName欄位是針對IOS系統的, 對於Android系統,該欄位必須要有,但是內容可以隨意寫,且不能為空。 platformVersion 欄位寫兩位也可以,能夠執行。 """ # 3.啟動APP # 宣告手機驅動物件(例項化webdriver) # 第一個引數為appium服務的地址,需要啟動appium服務。 # 第二個引數為Desired capabilities物件 # 我們就先傳入這兩個引數就可以了。 driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps) # http://127.0.0.1:4723/wd/hub 中/wd/hub這個是固定的,必須有,要求的。 # 上面的一步就已經把app啟動起來了。 # 4.操作APP # 先不對app做任何操作。 # 5.關閉APP time.sleep(5) driver.quit()
提示:
執行Appium程式碼注意事項:
1.保證裝置(手機)和電腦連線成功的。
就是使用adb connect
命令連結了裝置,或者adb devices
可以檢視到裝置名稱。
2.執行Appium Server(服務是啟動的)
3.執行測試程式碼即可。
注意:如果是第一次執行Appium指令碼,會在你的手機中安裝一個叫Appium Settings
的App。
如下圖所示:
最後我們來看一下Appium服務的日誌大概都說了些什麼內容,如下:
[Appium] Welcome to Appium v1.13.0 [Appium] Appium REST http interface listener started on 0.0.0.0:4723 # 一個session [HTTP] --> POST /wd/hub/session # 傳入Desired capabilities字典型別物件 [HTTP] {"capabilities":{"firstMatch":[{"platformName":"Android","appium:platformVersion":"7.1.2","appium:deviceName":"127.0.0.1:21503","appium:appPackage":"com.android.settings","appium:appActivity":".Settings"}]},"desiredCapabilities":{"platformName":"Android","platformVersion":"7.1.2","deviceName":"127.0.0.1:21503","appPackage":"com.android.settings","appActivity":".Settings"}} # 啟動AppiumDriver,建立回話 [W3C] Calling AppiumDriver.createSession() with args: ...省略部分資訊... # 然後啟動一些ADB命令 [ADB] Found 2 'build-tools' folders under 'F:\DevInstall\envs\android-sdk-windows' (newest first): [ADB] F:/DevInstall/envs/android-sdk-windows/build-tools/29.0.3 ...省略部分資訊... [BaseDriver] Event 'newSessionStarted' logged at 1605778307025 (17:31:47 GMT+0800 (中國標準時間)) # 6d2f52a7-f71e-4842-98e9-22aff59a4b38 為sessionID [W3C (6d2f52a7)] Cached the protocol value 'W3C' for the new session 6d2f52a7-f71e-4842-98e9-22aff59a4b38 ...省略部分資訊... [BaseDriver] Event 'quitSessionFinished' logged at 1605778313510 (17:31:53 GMT+0800 (中國標準時間)) [W3C (6d2f52a7)] Received response: null [W3C (6d2f52a7)] But deleting session, so not returning [W3C (6d2f52a7)] Responding to client with driver.deleteSession() result: null [HTTP] <-- DELETE /wd/hub/session/6d2f52a7-f71e-4842-98e9-22aff59a4b38 200 1469 ms - 14 [HTTP]
提示:
- 安卓應用的字尾是
.apk
,是AndroidPackage
的縮寫。- iOS安裝包
.ipa
,安裝iOS測試版本,需要iOS開發將iPhone手機的UUID編號加入到開發者專案。