使用adb命令

./adb shell screencap -p

可以截取当前屏幕,并且作为stdout,传给外部。那么对于python,我们可以用如下代码获取数据流。

使用Popen创建子进程用于读取数据流。

import subprocess
out=subprocess.Popen('./adb shell screencap -p',stdout=subprocess.PIPE)

out是当前的Popen实例,考虑到Windows接收过程中,会把\n当作\r\n写入流中,进而导致png文件打不开。

所以用replace修复数据流。

out=out.stdout.read().replace(b'\r\n', b'\n')

这里得到的out就是正常的二进制数据了,将其以wb的模式写成.png即可。

python使用adb获取Android Phone截图(解决Windows传输编码导致png文件损坏的问题)的更多相关文章

  1. Python 通过脚本获取Android的apk的部分属性,再通过加密算法生成秘钥。

    Python 通过脚本获取Android的apk的部分属性,再通过加密算法生成秘钥. #!/usr/bin/env python # -*- coding: utf- -*- import os im ...

  2. adb获取Android性能数据

    环境:Android测试环境 搭建Android测试环境: 1.下载AndroidSDK: 2.配置环境变量: (1).ANDROID_HOME (2).ANDROID_HOME-TOOLS (3). ...

  3. adb 获取Android手机信息命令(1)

    @set version=1.7.2Normal @echo ============================================================= @echo I ...

  4. Pyqt adb 获取Android手机屏幕

    adb的全称为Android Debug Bridge,就是起到调试桥的作用.adb的工作方式比较特殊,采用监听Socket TCP 5554等端口的方式让IDE和Qemu通讯,默认情况下adb会da ...

  5. adb 获取Android手机信息命令(2)

    #Android命令 #获取手机名称 GET_PHONE_NAME = 'adb shell getprop ro.product.model' #获取手机版本 GET_PHONE_VERSION = ...

  6. adb获取Android系统属性(adb shell getprop ***)数据来源

    在Android系统中,它的根文件系统下有几个用于启动系统时需要的配置文件: /init.rc /default.prop /system/build.prop 通常我们可以通过命令getprop获取 ...

  7. 通过ADB获取Android手机信息

    原文:https://blog.csdn.net/fasfaf454/article/details/51438743 1.获取手机系统信息( CPU,厂商名称等)adb shell "ca ...

  8. 【python调用windows CLI】调用adb统计Android app的流量消耗

    主要记录python如何调用windows CLI 手机连接PC,adb devices可以看到手机sn 通过adb 获取指定app的processID UID 读取Android  /proc/ne ...

  9. 测试成长记录:python调adb无法获取设备信息bug记录

    背景介绍: 一直在负责公司Android自动化的编写工作,采用的是uiautomator2,需要获取设备id来连接设备,就是 adb devices 问题描述: 之前一直用 subprocess.ch ...

随机推荐

  1. C#学习笔记(2)

    1.获取当前可用串口端口号 using System.IO.Ports; string[] portNames = SerialPort.GetPortNames(); 2.TextBox换行.设置光 ...

  2. xlua build时 报错处理

    error trpe 'UnityEngine.Lighr' does not contain a definiton for 'sgadowRadius' and no extension meth ...

  3. angular2--Tour of Heroes学习和分析--路由

    引入路由模块时的一个报错 No base href set. Please provide a value for the APP_BASE_HREF token or add a base elem ...

  4. NGUI之实现连连看小游戏

    一,部分游戏规则如下: 二,代码如下: 1. 游戏逻辑核心代码 using System.Collections.Generic; using UnityEngine; namespace Modul ...

  5. vector创建二位数组

    默认初始化vector vector<vevtor<int> > arr(row, vector<int>(col, 0)); //指定行大小为row,列为col, ...

  6. CentOS 7 Gitlab+Jenkins持续集成+自动化部署

    基于上次的环境<部署Gitlab+Jenkins持续集成环境> 来实现自动化部署 系统管理–>插件管理–>安装以下插件: Credentials Plugin(默认已经安装) ...

  7. asp.net core mvc 在中间件中使用依赖注入问题:System.InvalidOperationException: Cannot resolve scoped service 'IXXXService' from root provider.

    今天在弄JWT的时候需要用到用户验证使用一个自己写好的验证,但在出现了:System.InvalidOperationException: Cannot resolve scoped service ...

  8. luogu P1003 铺地毯

    水题 #include<stdio.h> #include<string.h> #include<algorithm> using namespace std; t ...

  9. python itertools 模块

    Python的内建模块itertools提供了非常有用的用于操作迭代对象的函数 首先,我们看看itertools提供的几个“无限”迭代器: >>> import itertools ...

  10. oracle数据库开启与关闭

    先用CRT软件链接-——建立会话——telent/ssh——写服务器Ip——点击链接——输入密码  # su - oracle   打开数据库 # cmd   进入特权模式 $ sqlplus / a ...