uiautomator2連接移動設備的三種方法


前置條件:

  • 移動設備必須開啟開發者模式;
  • 首次連接必須使用USB線連接;
  • uiautomator2版本2.15.0

方式2:需要在adb中執行命令:adb tcpip 5555  和  adb connect 192.168.10.141 

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# author: 青城子
# datetime: 2021/4/8 21:23 
# ide: PyCharm


import uiautomator2 as u2

# U2控制移動設備
# 第1種通過手機WIFI來進行連接,參數為手機WIFI的IP地址(u2版本2.15.0幾乎沒有成功過)
# d = u2.connect_wifi("192.168.3.123")
# print(d.info)

# 第2種連接手機的USB進行連接(安卓模擬器和真機都可以)必須開啟USB調試模式
# 開啟了tcpip連接:adb tcpip 5555
# d = u2.connect_usb("192.168.3.123:5555") # print(d.info) # 第3種 adb tcpip模式 # d = u2.connect_adb_wifi("192.168.3.123:5555") # print(d.info) d = u2.connect_adb_wifi("192.168.3.123:5555") print(d.info)
print(d.device_info) # 輸出詳細信息

info模式輸出連接設備信息

sudo+ssh://user1@192.168.3.118:22/home/user1/u2_projdec/venv/bin/python -u /home/user1/u2_projdec/test.py
already connected to 192.168.3.123:5555
{'currentPackageName': 'com.android.settings', 'displayHeight': 1280, 'displayRotation': 0,
'displaySizeDpX': 480, 'displaySizeDpY': 853, 'displayWidth': 720, 'productName': 'VOG-AL10',
'screenOn': True, 'sdkInt': 22, 'naturalOrientation': True}

device_info輸出詳細信息

sudo+ssh://user1@192.168.3.118:22/home/user1/u2_projdec/venv/bin/python -u /home/user1/u2_projdec/test.py
already connected to 192.168.3.123:5555
{'udid': 'android-08:00:27:84:eb:65-AOSP_on_Shama', 'version': '5.1.1', 'serial': 'android', 'brand': 'Android', 'model': 'AOSP on Shama', 
'hwaddr': '08:00:27:84:eb:65', 'sdk': 22, 'agentVersion': '0.10.0',
'display': {'width': 720, 'height': 1280},
'battery': {'acPowered': False, 'usbPowered': True, 'wirelessPowered': False, 'status': 2, 'health': 2, 'present': True, 'level': 86, 'scale': 100,
'voltage': 3, 'temperature': 26, 'technology': 'Li-ion'},
'memory': {'total': 1030696, 'around': '1 GB'},
'arch': '', 'owner': None, 'presenceChangedAt': '0001-01-01T00:00:00Z', 'usingBeganAt': '0001-01-01T00:00:00Z', 'product': None, 'provider': None}
通過ip來連接u2

前提條件:

  • 手機與電腦連接同一個局域網內
  • 例如:手機連接wifi后ip:192.168.10.141
  • 初始時使用usb線連接方式進行初始化,后續操作即可不用usb線進行操作

步驟:

  1. wifi連接adb需要tcpip連接模式:
  2. 開啟了tcpip連接:adb tcpip 5555
  3. 執行連接命令:adb connect 192.168.10.141 

python測試代碼:

首次必須通過usb連接后初始化,后續不需要usb線連接:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
__author__ = 'tian'
__data__ = '2021/5/6 11:39'
# software: PyCharm

import uiautomator2 as u2

import time

# d = u2.connect("91CEBP92DD47") # 第一次必須通過usb進行初始化,后續就可以使用wifi
# print("當前服務:",d.uiautomator.running()) 
# d = u2.connect("192.168.10.141:5555") #
d = u2.connect_adb_wifi("192.168.10.141:5555")

d.debug = True
print(d.device_info)

第一次連接使用 d = u2.connect("91CEBP92DD47")

初始化后使用拔掉usb連接線:u2.connect()  或者 u2.connect_adb_wifi()都可以,參數為手機ip+端口

需求:

通過代碼啟動手機上的app,運行5秒后,退出。

前提條件:

已抖音為例:下載抖音apk到本地,然后將抖音apk安裝安卓手機中。

獲取抖音apk安裝的包名

獲取包名方法:通過安卓模擬器安裝目錄里面bin目錄下面aapt工具來獲取

命令:aapt  dump badging  xxx.apk  獲取到包名

appt dump badging  本地抖音apk的路徑

如圖:第一行就是抖音的包名

實現代碼

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# author: 青城子
# datetime: 2021/4/11 22:48 
# ide: PyCharm

import uiautomator2 as u2
import time

d = u2.connect_adb_wifi("192.168.3.125:5555")
print(d.info)
# 啟動
d.app_start('com.ss.android.ugc.aweme')
# 運行5秒
time.sleep(5)
# 停止抖音app
d.app_stop('com.ss.android.ugc.aweme')
ubuntu系統安裝aapt

sudo apt-get install aapt  

如果出現無法解析域名的錯誤:

編輯etc/resolv.conf文件,在最后加上nameserver 8.8.8.8

sudo vim /etc/resolv.conf  

在最后加上nameserver 8.8.8.8

保存退出,重新安裝aapt即可。

輸入aapt 如圖說明安裝成功

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM