程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

app小程序手機端Python爬蟲實戰04-u2自動化工具基本操作-操作設備

編輯:Python

作者:虛壞叔叔
博客:https://xuhss.com

早餐店不會開到晚上,想吃的人早就來了!

一、啟動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自動化工具基本操作。
  • 如果覺得文章對你有用處,記得 點贊收藏轉發 一波哦,博主也支持為鐵粉絲制作專屬動態壁紙哦~

往期優質文章分享

  • python3調用百度翻譯接口

  • 花 1 分鐘寫了一段爬蟲,幫實現微信搶號成功
  • C++讀取python腳本中的dictionary字典變量以及它的鍵值對

  • Qt中的套件提示no complier set in kit和no debugger,出現黃色感歎號問題解決(MSVC2017)

  • Python+selenium 自動化 - 實現自動導入、上傳外部文件(不彈出windows窗口)

優質教程分享

  • 如果感覺文章看完了不過瘾,可以來我的其他 專欄 看一下哦~
  • 比如以下幾個專欄:Python實戰微信訂餐小程序、Python量化交易實戰、C++ QT實戰類項目 和 算法學習專欄
  • 可以學習更多的關於C++/Python的相關內容哦!直接點擊下面顏色字體就可以跳轉啦!
學習路線指引(點擊解鎖)知識定位人群定位🧡 Python實戰微信訂餐小程序 🧡進階級本課程是python flask+微信小程序的完美結合,從項目搭建到騰訊雲部署上線,打造一個全棧訂餐系統。Python量化交易實戰入門級手把手帶你打造一個易擴展、更安全、效率更高的量化交易系統️ Python&C++混合編程️難度偏高分享學習Python C++混合編程知識!

資料白嫖,溫馨提示

關注下面卡片即刻獲取更多編程知識,包括各種語言學習資料,上千套PPT模板和各種游戲源碼素材等等資料。更多內容可自行查看哦!


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved