做Android手機系統或App測試的過程中, 如果碰到了bug,開發一般會需要測試人員提供當時的bug截圖, 如何用Python 批處理腳本, 快速實現截圖呢? 準備階段 1. adb shell screencap p /sdcard/a.png 命令, 可以實現手機截圖並保存到/sdcard/ ...
做Android手機系統或App測試的過程中,
如果碰到了bug,開發一般會需要測試人員提供當時的bug截圖,
如何用Python 批處理腳本, 快速實現截圖呢?
準備階段
- adb shell screencap -p /sdcard/a.png 命令, 可以實現手機截圖並保存到/sdcard/a.png
- adb pull /sdcard/a.png . 即可實現導出到當前路徑(.代表當前路徑)
- os.system可以調用以上 adb 命令行工具
Python批處理腳本形式
其實和寫DOS批處理腳本類似,
Python只需要用os.system()函數,
即可快速實現調用各類命令行命令。
#coding=utf-8
import os
print("屏幕截取中...請稍候!")
os.system("adb shell screencap -p /sdcard/a.png")
os.system("adb pull /sdcard/a.png .")
print("截圖完畢!")
os.system("pause")
os.system("pause"),建議儘量加上,其含義是暫停程式執行,
等待用戶查看腳本執行結果,避免運行完畢後直接自動關閉腳本執行cmd視窗。
Python面向過程函數形式
找到可以封裝成一個函數塊的小代碼塊兒, 用函數封裝起來.
函數的命名一般建議用"動詞", 所以我們命名為: "screencap",
封裝好後, 用screencap()函數調用即可。
#coding=utf-8
import os
def screencap(): #封裝
print("屏幕截取中...請稍候!")
os.system("adb shell screencap -p /sdcard/a.png")
os.system("adb pull /sdcard/a.png .")
print("截圖完畢!")
screencap() #調用
os.system("pause")
Python面向對象類形式
- 以"一切皆可歸類"的思想, 先抽象化出一個類來,
類名一般建議用"名詞", 所以我們命名為"ScreenCapturer",
代表屏幕捕捉器, 且一般要駝峰式(首字母大寫)來規範類的命名.
- 養成良好的類的初始化(init)的習慣,
初始化過程中, 可以pass(什麼都不做) - 這個ScreenCapturer 類, 目前只需要一個截屏的函數(動作功能)就足夠了,
函數的命名一般建議用"動詞", 所以我們命名為: "screencap" . - 類是一個抽象的事物, 必須實例化成具體的對象後,
才能進行調用, 所以我們實例化並命名成了s_obj, 表明是一個對象. - 實例化成具體對象後, 對象就可以調用screencap這個函數了.
#coding=utf-8
import os
class ScreenCapturer(): #類名
def __init__(self): #類的初始化
pass
def screencap(self): #定義類內部的函數名
print("屏幕截取中...請稍候!")
os.system("adb shell screencap -p /sdcard/a.png")
os.system("adb pull /sdcard/a.png .")
print("截圖完畢!")
s_obj = ScreenCapturer() #類實例化成一個對象
s_obj.screencap() #用對象來調用函數
os.system("pause")
代碼運行方式
確保Android設備通過USB線與電腦連接了,adb設備有效連接,
以上代碼的3種實現形式都可以直接運行,
比如保存為adb_screencap.py並放在桌面,
每次需要截圖的時候,雙擊運行adb_screencap.py,
就會在桌面上生成一個a.png。
有的Android系統是用screencap命令, 有的是用screenshot命令來截圖。
需要自行嘗試下。
更多更好的原創文章,請訪問官方網站:www.zipython.com
自拍教程(自動化測試Python教程)
原文鏈接:https://www.zipython.com/#/detail?id=f8396e5cf8b443ec8b68de2fb4a72623
也可關註“武散人”微信訂閱號,隨時接受文章推送。