只有拥有坐上牌桌的能力,才有博弈的机会...
可能在Android测试过程中有很多需要获取的元素,比如这个手机的屏幕状态,除了可以用开发APK API(Java)实现获取锁屏状态外也可以通过adb命令获取手机是否锁屏状态,当然这种使用的adb的方式可以用python来封装。
对于手机各种数据的获取,一般要么来自静态配置文件,要么来自动态的service动态数据手机屏幕状态这种动态的可以通过一个window的服务来获取,执行指令:
adb shell dumpsys window policy | findstr isStatusBarKeyguard (守卫者状态:电源键)
adb shell dumpsys window policy | findstr mShowingLockscreen (显示锁定屏幕)
已解锁状态值:
isStatusBarKeyguard=false (true时:手机锁屏;false时:手机解锁)
mShowingLockscreen=true (true时:手机锁屏;false时:手机解锁)
如果出现以上2指令有一条指令输出值空,一般不会出现空置的情况,如果有可以通过下面截图中的几个字段:
代码实现:
def is_screen_locked(self, sno):
"""
查看当前手机屏幕是什么状态:锁屏(0,1) * 亮黑(0,1)
三种情况需要考虑
2:黑屏上锁、0:亮屏解锁、1:亮屏上锁
四种情况去考虑就是有无锁、是否亮屏,我觉得还是按其中来吧
10:锁黑、11:锁亮、01:开亮、00:开黑
adb shell dumpsys window policy | grep isStatusBarKeyguard 确认是否有锁
adb shell dumpsys window policy | grep ScreenOn 是否亮屏
"""
window_policy = self.shell(sno, "dumpsys window policy").stdout.read()
locked_status = re.findall(r"isStatusBarKeyguard=(\w+)", window_policy)[0]
bright_status = re.findall(r"mScreenOnFully=(\w+)", window_policy)[0]
if locked_status == 'true' and bright_status == 'true':
return "11"
elif locked_status == 'true' and bright_status == 'false':
return "10"
elif locked_status == 'false' and bright_status == 'false':
return "00"
elif locked_status == 'false' and bright_status == 'true':
return "01"
备注:整理笔记,发现新问题