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设备截图工具的更多相关文章
- python Windows下的android设备截图工具
目录 界面版 命令行版 界面版 利用python的wx库写个ui界面,用来把android设备的截图输出到电脑屏幕,前提需要安装adb,涉及到的python库也要安装.代码如下: #!/usr/bin ...
- 用Python写一个向数据库填充数据的小工具
一. 背景 公司又要做一个新项目,是一个合作型项目,我们公司出web展示服务,合作伙伴线下提供展示数据. 而且本次项目是数据统计展示为主要功能,并没有研发对应的数据接入接口,所有展示数据源均来自数据库 ...
- [转]phoneGap3.0安装步骤(以windows下的android环境为例):
phoneGap3.0安装步骤(以windows下的android环境为例): 环境: WIN系统,JDK,Android,Eclipse,Ant,Git,PhoneGap3.x (Cordova) ...
- 【Python】如何基于Python写一个TCP反向连接后门
首发安全客 如何基于Python写一个TCP反向连接后门 https://www.anquanke.com/post/id/92401 0x0 介绍 在Linux系统做未授权测试,我们须准备一个安全的 ...
- 十行代码--用python写一个USB病毒 (知乎 DeepWeaver)
昨天在上厕所的时候突发奇想,当你把usb插进去的时候,能不能自动执行usb上的程序.查了一下,发现只有windows上可以,具体的大家也可以搜索(搜索关键词usb autorun)到.但是,如果我想, ...
- python写一个能变身电光耗子的贪吃蛇
python写一个不同的贪吃蛇 写这篇文章是因为最近课太多,没有精力去挖洞,记录一下学习中的收获,python那么好玩就写一个大一没有完成的贪吃蛇(主要还是跟课程有关o(╥﹏╥)o,课太多好烦) 第一 ...
- 一个windows下的ddos样本
一个windows下的ddos样本. 加载器 程序运行之后会在临时目录释放出一个256_res.tmp的文件 之后将该文件移动至system32目录下,以rasmedia.dll命名. 删除原文件. ...
- 用Python写一个简单的Web框架
一.概述 二.从demo_app开始 三.WSGI中的application 四.区分URL 五.重构 1.正则匹配URL 2.DRY 3.抽象出框架 六.参考 一.概述 在Python中,WSGI( ...
- Windows下修改Android手机的hosts
Windows下修改Android手机的hosts 1.首先,手机是Root过的. 2.连接手机和电脑, adb shell 进入命令行. 3.获取root用户权限: su -root 4.不知道为何 ...
随机推荐
- 关于IOS音频的开发积累
1.设置类别,表示该应用同时支持播放和录音 OSStatus error; UInt32 sessionCategory = kAudioSessionCategory_PlayAndRecord; ...
- mongodb权限管理
说到mongodb就得先谈谈mongodb的用户组,和传统的关系型数据库不一样,mongodb并没有在创建应用时就要求创建权限管理组,所以类似于Robomongo这样的数据库可视化工具在创建conne ...
- Python学习【第七篇】基本数据类型
基本数据类型 数字 2是一个整数的例子. 长整数 不过是大一些的整数. 3.23和52.3E-4是浮点数的例子,E标记表示10的幂.在这里,52.3E-4表示52.3*10-4. (-5+4j)和(2 ...
- goim 及时消息 集成
https://github.com/roamdy/goim-oc-sdk goim 及时消息 集成
- mysql dba系统学习(6)二进制日志binlog之二
MySQL 5.5 中对于二进制日志 (binlog) 有 3 种不同的格式可选:Mixed,Statement,Row,默认格式是 Statement.总结一下这三种格式日志的优缺点.MySQL R ...
- JSP基本语法小结
jsp表达式:<%=???%> 在jsp页面嵌入java代码<%Java代码%>可以用多个<% %>分割代码段 jsp声明:<%!用这样的方法可以声明java ...
- OEIS A140358
以前也许做过? 有点方 最小整数1到k 加减得到 n 1+-2+-3+-...+-k = n 求最小k #include <cstdio> #include <algorithm&g ...
- java 图片处理工具类
import java.awt.Image; import java.awt.Rectangle; import java.awt.geom.AffineTransform; import ja ...
- 苹果版App开发心得
这几个月中做的工作包括网站开发.安卓App开发和苹果App开发,前两者用的语言都是我熟悉的java,故苹果知识的学习,较安卓知识的学习,多出「语言基础」一块,其他方面差不多. 之前发过安卓那篇,如感兴 ...
- django 同步数据库
http://www.jianshu.com/p/dbc4193b4f95 博主教程讲解比较详细,可做参考使用.