【自動化】獲取手機的螢幕狀態
阿新 • • 發佈:2019-01-23
只有擁有坐上牌桌的能力,才有博弈的機會...
可能在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"
備註:整理筆記,發現新問題