作者:虛壞叔叔
早餐店不會開到晚上,想吃的人早就來了!😄

一、啟動 uiautomator
服務
uiautomator
import uiautomator2 as u2
import time
# 通過手機的序列号接通
d = u2.connect_usb("127.0.0.1:62001")
print(d.service("uiautomator").running())
# 通過start方法啟動uiautomator服務
d.service("uiautomator").start()
time.sleep(2)
print(d.service("uiautomator").running())
運作輸出資料:
C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python.exe C:/Users/Administrator/Desktop/u2_project/testu2.py
False
True
手機虛拟機也顯示服務啟動:
停止服務的話隻需要這樣調用stop方法即可
d.service("uiautomator").stop()
二、檢視atx-agent狀态
uiautomator
并沒有提供
atx
啟動停止相關操作,但是提供了檢視狀态的接口,可以手動關閉atx-agent。
但最好不要停止atx-agent,如果停止,程式就無法控制移動裝置。
# 檢視atx-agent運作狀态
print(d.agent_alive)
如果atx-agent停止了,可以通過connect_usb代碼再次喚醒:
d = u2.connect_usb("127.0.0.1:62001")
當atx-agent和uiautomator都處于運作時
我們可以檢視裝置的資料,如果你發現檢視不了,就是服務停止運作了,你就可以通過啟動這2個服務就看
# 檢視裝置資料
print(d.device_info)
輸出資料如下:
C:\Users\Administrator\AppData\Local\Programs\Python\Python36\python.exe C:/Users/Administrator/Desktop/u2_project/testu2.py
True
{'udid': 'android-08:00:27:77:f5:4d-AOSP_on_Shama', 'version': '5.1.1', 'serial': 'android', 'brand': 'Android', 'model': 'AOSP on Shama', 'hwaddr': '08:00:27:77:f5:4d', 'sdk': 22, 'agentVersion': '0.10.0', 'display': {'width': 1080, 'height': 1920}, 'battery': {'acPowered': False, 'usbPowered': True, 'wirelessPowered': False, 'status': 5, 'health': 2, 'present': True, 'level': 90, 'scale': 100, 'voltage': 10000, 'temperature': 378, 'technology': 'Li-ion'}, 'memory': {'total': 3566000, 'around': '3 GB'}, 'arch': '', 'owner': None, 'presenceChangedAt': '0001-01-01T00:00:00Z', 'usingBeganAt': '0001-01-01T00:00:00Z', 'product': None, 'provider': None}
三、app安裝啟動相關操作
3.1 安裝app
可以擷取app
# 安裝apk
d.app_install(data="C:\\Users\\Administrator\\Downloads\\3.5.6.apk")
3.2 啟動app
啟動app需要知道包名,包名可以通過aapt擷取:
cd /d C:\Program Files (x86)\Nox\bin
aapt dump badging C:\Users\Administrator\Downloads\3.5.6.apk
然後啟動
app
:
# 啟動app
d.app_start(package_name="com.tal.kaoyan")
3.3 檢視前台運作的app資料
# 檢視目前前台運作的app資料
print(d.app_current())
{'package': 'com.tal.kaoyan', 'activity': 'com.kaoyan.kylogin.ui.login.LoginActivity'}
3.4 停止app運作
# 停止app運作
d.app_stop(package_name="com.tal.kaoyan")
3.5 清楚app緩存
# 清理app緩存
d.app_clear(package_name="com.tal.kaoyan")
3.6 解除安裝app
# 解除安裝app
d.app_uninstall(package_name="com.tal.kaoyan")
3.7 擷取目前裝置所有app資料
# 擷取目前裝置所有app資料
print(d.app_list())
['com.github.uiautomator', 'com.android.providers.telephony', 'com.android.providers.calendar', 'com.android.providers.media', 'com.android.wallpapercropper', 'com.android.documentsui', 'com.android.externalstorage', 'com.android.htmlviewer', 'com.android.mms.service', 'com.android.providers.downloads', 'com.github.uiautomator.test', 'com.android.browser', 'com.android.soundrecorder', 'com.android.defcontainer', 'com.android.providers.downloads.ui', 'com.android.pacprocessor', 'com.android.certinstaller', 'android', 'com.android.contacts', 'com.android.camera2', 'com.android.backupconfirm', 'com.android.provision', 'com.android.phasebeam', 'com.android.providers.settings', 'com.android.sharedstoragebackup', 'com.android.dreams.basic', 'com.android.inputdevices', 'com.google.android.webview', 'com.android.onetimeinitializer', 'com.android.server.telecom', 'com.android.keychain', 'com.android.inputservice', 'com.android.gallery3d', 'com.android.packageinstaller', 'com.svox.pico', 'com.android.proxyhandler', 'com.cyanogenmod.filemanager', 'com.android.managedprovisioning', 'com.android.wallpaper.livepicker', 'com.android.settings', 'com.android.vpndialogs', 'com.android.phone', 'com.android.shell', 'com.android.providers.userdictionary', 'com.android.location.fused', 'com.android.systemui', 'com.android.bluetooth', 'com.android.providers.contacts', 'com.android.captiveportallogin']
3.8 擷取正在運作的app清單
# 擷取正在運作的app清單
print(d.app_list_running())
['com.android.externalstorage', 'com.github.uiautomator', 'com.android.providers.calendar', 'com.android.systemui', 'com.android.defcontainer', 'com.android.inputservice', 'com.android.documentsui', 'com.android.keychain', 'com.svox.pico', 'com.android.phone']
3.9 停止所有app運作
# 停止所有app運作
d.app_stop_all()
3.10 解除安裝所有app
# 解除安裝所有app
d.app_uninstall_all()
四、總結
- 本文介紹了Uiautomator2自動化工具基本操作。