-
《自拍教程38》Python adb一键截屏
做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命令来截图。
需要自行尝试下。
自拍教程(自动化测试Python教程)
原文链接:https://www.zipython.com/#/detail?id=f8396e5cf8b443ec8b68de2fb4a72623
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
JavaScript判断两个数组相等的四类方法
js如何操作video标签
React实战--利用甘特图和看板,强化Paas平
【记录】正则替换的偏方
前端下载 Blob 类型整理
抽象语法树AST必知必会
关于JS定时器的整理
JS中使用Promise.all控制所有的异步请求都完
js中字符串的方法
import-local执行流程与node模块路径解析流程