【自动化】获取手机的屏幕状态

只有拥有坐上牌桌的能力,才有博弈的机会...

可能在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"

备注:整理笔记,发现新问题



评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值