uiautomator2连接移动设备
前置条件:
- 移动设备必须开启开发者模式;
- 首次连接必须使用USB线连接;
- 手机与电脑连接同一个局域网内;
- 使用tcpip连接时,必须一开始就将所有连接设备的ip地址add connect 添加连接。如果使用tcpip连接一台移动设备IP后就执行,后面使用add connect 添加移动设备IP都会失败;
示例步骤:
需求:通过IP的方式来操作多台安卓手机;
初始化:
1、需要连接的安卓手机都安装好ATX,AtxAgent和UIAutomator服务全部在运行状态;
2、使用USB线将安卓手机与PC进行连接,通过adb devices获取设备ID,对设备进行初始操作
初始化代码:
driver = u2.connect("3987022") # 设备ID print(driver.uiautomator.running()) print(driver.device_info)
所有需要执行的安卓手机,都需要先执行初始化的操作。
以上操作每台安卓手机都执行完毕后,才能开启adb tcpip 5555
执行命令:adb tcpip 5555
依次添加移动设备ip:adb connect ip地址:
adb connect 192.168.10.141
connected to 192.168.10.141:5555 # 添加成功提示
添加完毕后使用:adb devices查看
λ adb devices
List of devices attached
3987022 device
192.168.10.135:5555 device
192.168.10.105:5555 device
192.168.10.141:5555 device
如上述信息说明添加3台移动设备IP成功。
示例代码:
#!/usr/bin/env python # -*- coding: utf-8 -*- __author__ = 'tian' __data__ = '2022/6/21 11:54' # software: PyCharm import uiautomator2 as u2 from adbutils import adb # 获取所有连接移动设备的IP或设备序号 def get_devices(): rest = [d.serial for d in adb.device_list()] print(rest) return rest rest = get_devices() # 打印所有连接移动设备信息 for i in rest: driver = u2.connect(i) print(driver.info) print(driver.device_info)
需求:
通过代码启动手机上的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 如图说明安装成功