界面版

利用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设备截图工具的更多相关文章

  1. python Windows下的android设备截图工具

    目录 界面版 命令行版 界面版 利用python的wx库写个ui界面,用来把android设备的截图输出到电脑屏幕,前提需要安装adb,涉及到的python库也要安装.代码如下: #!/usr/bin ...

  2. 用Python写一个向数据库填充数据的小工具

    一. 背景 公司又要做一个新项目,是一个合作型项目,我们公司出web展示服务,合作伙伴线下提供展示数据. 而且本次项目是数据统计展示为主要功能,并没有研发对应的数据接入接口,所有展示数据源均来自数据库 ...

  3. [转]phoneGap3.0安装步骤(以windows下的android环境为例):

    phoneGap3.0安装步骤(以windows下的android环境为例): 环境: WIN系统,JDK,Android,Eclipse,Ant,Git,PhoneGap3.x (Cordova) ...

  4. 【Python】如何基于Python写一个TCP反向连接后门

    首发安全客 如何基于Python写一个TCP反向连接后门 https://www.anquanke.com/post/id/92401 0x0 介绍 在Linux系统做未授权测试,我们须准备一个安全的 ...

  5. 十行代码--用python写一个USB病毒 (知乎 DeepWeaver)

    昨天在上厕所的时候突发奇想,当你把usb插进去的时候,能不能自动执行usb上的程序.查了一下,发现只有windows上可以,具体的大家也可以搜索(搜索关键词usb autorun)到.但是,如果我想, ...

  6. python写一个能变身电光耗子的贪吃蛇

    python写一个不同的贪吃蛇 写这篇文章是因为最近课太多,没有精力去挖洞,记录一下学习中的收获,python那么好玩就写一个大一没有完成的贪吃蛇(主要还是跟课程有关o(╥﹏╥)o,课太多好烦) 第一 ...

  7. 一个windows下的ddos样本

    一个windows下的ddos样本. 加载器 程序运行之后会在临时目录释放出一个256_res.tmp的文件 之后将该文件移动至system32目录下,以rasmedia.dll命名. 删除原文件. ...

  8. 用Python写一个简单的Web框架

    一.概述 二.从demo_app开始 三.WSGI中的application 四.区分URL 五.重构 1.正则匹配URL 2.DRY 3.抽象出框架 六.参考 一.概述 在Python中,WSGI( ...

  9. Windows下修改Android手机的hosts

    Windows下修改Android手机的hosts 1.首先,手机是Root过的. 2.连接手机和电脑, adb shell 进入命令行. 3.获取root用户权限: su -root 4.不知道为何 ...

随机推荐

  1. 使用ionic2开发一个登录功能

    服务的采用Asp.net API实现,数据库用的sqlite,具体实现请看:源代码 唯一需要说明的是跨域问题: 跨域代码: <system.webServer> <httpProto ...

  2. Redhat 7 或者 CentOS 7 密码破解

    1.在如下界面按 e 2.在 linux16 这一行的最后面添加 rd.break,然后按 ctrl + x 进入单用户模式 3.以读写的方式重新挂载 sysroot 4.切换到 sysroot 目录 ...

  3. Android四大核心组件之ContentProvider

    实验内容 学习ContextProvider用法 编码实现简单ContextProvider功能 实验要求 通过简单代码了解ContextProvider功能和用法 实验步骤 ContextProvi ...

  4. cs

    cs <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.o ...

  5. C# async and await

    C# 5.0中引入了async 和 await.这两个关键字可以让你更方便的写出异步代码. 看个例子: public class MyClass { public MyClass() { Displa ...

  6. fopen,fread和fwrite

    在最近的编程练习和写东西的过程中,常常用到了fopen和fread两个函数来读取本地文件.之前使用这两个函数时,一直没有出现过什么问题.也是因为没有出现问题,对这两个函数的用法的一些细节没有很了解,所 ...

  7. WPF显示Html

    1.添加引用 WindowsFormsIntegration.dll System.Windows.Forms.dll 2.界面内容 <UserControl x:Class="HKD ...

  8. MySQL的下载与安装 和 navicat for mysql 安装使用

    新手上路-MySQL安装 目录结构 Windows平台 MySQL安装 示例数据导入 Linux平台 CentOS系统 Ubuntu系统 FAQ 密码生成工具-keepass 修改提示符 图形工具 删 ...

  9. Android JNI 本地开发接口

    前言 我们为什么要用JNI --> 高效.扩展 高效:Native code效率高,数学运算,实时渲染的游戏上,音视频处理 (极品飞车,opengl,ffmpeg,文件压缩,图片处理-) 扩展: ...

  10. mac的webdriver自动化

    下载webdriver-chrome的连接:http://chromedriver.storage.googleapis.com/index.html