uiautomator2-常见的设备操作

这篇博客介绍了如何使用Python操控Android应用程序,包括启动、关闭、重启应用,以及在应用运行状态下的操作。同时,展示了如何检测应用崩溃、获取设备信息如窗口大小、应用详情、序列号、WLAN IP等。此外,还涵盖了剪贴板操作的相关内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

session

session代表应用程序生命周期,可用于启动应用程序,检测应用程序崩溃。

  • 启动并关闭应用
sess = d.session("com.netease.cloudmusic") # 启动网易云音乐
sess.close() # stop网易云音乐
sess.restart() # 冷启动网易云音乐
  • 使用Python中的with...as...语句启动和关闭app
# d.session()方法的返回值赋值给sess,然后sess就可以去操作一些应用内的方法
with d.session("com.netease.cloudmusic") as sess:
	sess(text="Play").click()
  • 应用程序正在运行相关
# 如果App未运行,就运行App。如果已运行,就跳过
sess = d.session("com.netease.cloudmusic", attach=True)

# 加上stritct=True参数后,如果App未运行,抛出SessionBrokenError异常
sess = d.session("com.netease.cloudmusic", attach=True, strict=True)
  • 检测应用崩溃
# app正在运行时,操作一切正常
# app crash或退出时,抛出SessionBrokenError。且不仅仅是click(),会话下的其他函数调用也会引发SessionBrokenError
sess = d.session("com.netease.cloudmusic")
sess(text="Music").click
  • 检查session是否ok
# 函数名可能在之后会改变
sess = d.session("com.netease.cloudmusic")
sess.running() # 返回True或False

设备信息相关

- 获取基本信息:d.info 下图是可能的输出

{
	u'displayRitation:0, # 旋转
	u'displaySizeDpY': 640,
    u'displaySizeDpX': 360,
    u'currentPackageName': u'com.android.launcher',
    u'productName': u'takju',
    u'displayWidth': 720,
    u'sdkInt': 18,
    u'displayHeight': 1184,
    u'naturalOrientation': True
}
  • 获取窗口大小:d.window_size()
print(d.window_size())
# 设备直立输出:(1080,1920)
# 设备水平输出:(1920. 1080)
  • 获取当前的应用信息(对于某些android设备,输出可能为空)
print(d.app_current())
# 输出1:{'activity': '.Client', 'package': 'com.netease.example', 'pid': 23710}
# 输出2: {'activity': '.Client', 'package': 'com.netease.example'}
# 输出3: {'activity': None, 'package': None}
  • 等待activity
d.wait_activity(".ApiDemos", timeout=10) # 第一个参数是activity名,第二个参数是等待的时间。默认等待时间是10s
  • 获取设备序列号
print(d.serial)
# 输出eg:74aAEDR428Z9
  • 获取wlan ip
print(d.wlan_ip)
# 输出eg:10.0.0.1
  • 获取设备详细信息
print(d.device_info)

# 可能的输出
{
	'udid': '3578298f-b4:0b:44:e6:1f:90-OD103',
	'version': '7.1.1',
	'serial': '3578298f',
	'brand': 'SMARTISAN',
	'model': 'OD103',
	'hwaddr': 'b4:0b:44:e6:1f:90', # mac地址
	'port': 7912,
 'sdk': 25,
 'agentVersion': 'dev',
 'display': {'width': 1080, 'height': 1920},
 'battery': {'acPowered': False,
  'usbPowered': False,
  'wirelessPowered': False,
  'status': 3,
  'health': 0,
  'present': True,
  'level': 99,
  'scale': 100,
  'voltage': 4316,
  'temperature': 272,
  'technology': 'Li-ion'},
 'memory': {'total': 3690280, 'around': '4 GB'},
 'cpu': {'cores': 8, 'hardware': 'Qualcomm Technologies, Inc MSM8953Pro'},
 'presenceChangedAt': '0001-01-01T00:00:00Z',
 'usingBeganAt': '0001-01-01T00:00:00Z'
}
  • 剪贴板
设置剪贴板内容或获取内容
d.set_clipboard('text','label')
print(d.clipboard)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值