Python写一个Windows下的android设备截图工具
Posted 目前在腾讯
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python写一个Windows下的android设备截图工具相关的知识,希望对你有一定的参考价值。
界面版
利用python的wx库写个ui界面,用来把android设备的截图输出到电脑屏幕,前提需要安装adb,涉及到的python库也要安装。代码如下:
import wx,subprocess,os,platform class AutyFrame(wx.Frame): def __init__(self): wx.Frame.__init__(self, None, -1, \'Android Auty\', size=(350, 300)) self.panel = wx.Panel(self, -1) #Android devices combox. combox_list = [] r = execute_shell("adb devices") for i in range(1,len(r)-1): if r[i].startswith("*") and r[i].endswith("*"): pass else: combox_list.append(r[i].split("\\t")[0]) wx.StaticText(self.panel, -1, "Select devices:", (15, 15)) self.devices_combobox = wx.ComboBox(self.panel, -1, r[1].split("\\t")[0], (15, 35), wx.DefaultSize, combox_list, wx.CB_DROPDOWN) #Capture button. self.capture_button = wx.Button(self.panel, -1, "capture", pos=(188, 35), size=(66,25)) self.reload_button = wx.Button(self.panel, -1, "reload", pos=(258, 35), size=(66,25)) self.Bind(wx.EVT_BUTTON, self.captureClick, self.capture_button) self.Bind(wx.EVT_BUTTON, self.reloadClick, self.reload_button) self.capture_button.SetDefault() self.reload_button.SetDefault() def captureClick(self, event): capture_android(self.devices_combobox.GetValue()) if("Windows" in platform.platform()): os.startfile("d:\\\\screenshot.png") def reloadClick(self, event): self.devices_combobox.Clear() k = execute_shell("adb devices") for i in range(1,len(k)-1): self.devices_combobox.Append(k[i].split("\\t")[0]) self.devices_combobox.SetValue(k[1].split("\\t")[0]) def execute_shell(shell): p = subprocess.Popen(shell,shell=True,stdout=subprocess.PIPE) out = p.stdout.readlines() return out def capture_android(device_id): sh1 = "adb -s "+device_id+" shell /system/bin/screencap -p /sdcard/screenshot.png" sh2 = "adb -s "+device_id+" pull /sdcard/screenshot.png d:/screenshot.png" execute_shell(sh1) execute_shell(sh2) if __name__ == \'__main__\': app = wx.PySimpleApp() AutyFrame().Show() app.MainLoop()
运行截图:
优点:
1. 比uiautomatorviewer运行速度快,比monitor更快;
2. 可以针对多个设备,选择性进行截屏;
3. 截屏以后截图(保存在D盘根目录下“screenshot.png”文件)会自动打开;
4. 插拔设备后可以reload重新加载设备列表。
命令行版
如果不想安装wx库,提供一个命令行版的安卓截屏python脚本(capture_android.py):
import sys,os,platform from execute_shell import execute_shell def capture_android(device_id): sh1 = "adb -s "+device_id+" shell /system/bin/screencap -p /sdcard/screenshot.png" sh2 = "adb -s "+device_id+" pull /sdcard/screenshot.png d:/screenshot.png" execute_shell(sh1) execute_shell(sh2) if __name__ == \'__main__\': if len(sys.argv) == 2: device_id = sys.argv[1] capture_android(sys.argv[1]) if("Windows" in platform.platform()): os.startfile("d:\\\\screenshot.png")
引用的execute_shell.py内容如下(把引用的文件放在同级目录下就行):
import subprocess def execute_shell(shell): p = subprocess.Popen(shell,shell=True,stdout=subprocess.PIPE) out = p.stdout.readlines() return out
使用方法(python 脚本路径 device_id参数):
截屏后图片会自动打开。
以上是关于Python写一个Windows下的android设备截图工具的主要内容,如果未能解决你的问题,请参考以下文章