在测试工作中,经常需要对问题进行记录,其中最重要的就是要填写操作步骤并且记录测试结果。导出手机上的截图并上传到bug管理系统是一个很常见的操作。
本例就是利用python执行adb命令来实现对手机截图并导出到本地的功能。
运行环境说明:
1. adb环境:手机需要使用数据线连接到电脑,确保执行adb devices有结果。配置adb环境变量的具体方法可百度。
2. python环境: 本例使用的是python 3.6
3. mac 和 windows 的的路径表达方式不同,需要注意。
windows在路径中对路径分隔符需要加入转义字符'\'。
mac:
path = "/User/lwq/Deskop/screenshot"
windows:
path = "E:\\ lwq\\ screenshot"
代码说明:
cmd = 'adb shell /system/bin/screencap /sdcard/screenshot.png'
这条命令是一条android的adb 命令,作用是对手机的当前屏幕进行截图,并将截图命名为'screenshot.png',并保存到手机的根目录。
os.system(cmd)
执行上一条的adb命令
time.sleep(1)
time.sleep(1)为等待1秒。执行完adb命令后如果不加等待时间可能会报错。
os.system("adb pull /sdcard/screenshot.png " + path)
执行adb命令,将手机根目录的screenshoot.png图片导出到电脑上,path为开头设置的电脑路径。
currenttime = time.strftime("%Y-%m-%d_%H-%M-%S", time.localtime())
old_path = os.path.join(path, 'screenshot.png')
new_path = os.path.join(path, '{}.png'.format(currenttime))
time.sleep(1)
os.rename(old_path, new_path)
这一段代码的作用是获取当前的时间,并将导出到本地的图片重命名
完整代码:
# -*- coding: utf-8 -*-
import os
import time
def screenshot():
# path = os.path.dirname(os.path.realpath(__file__))
path = "/Users/lwq/Desktop/screenshot"
cmd = 'adb shell /system/bin/screencap /sdcard/screenshot.png'
os.system(cmd)
time.sleep(1)
os.system("adb pull /sdcard/screenshot.png " + path)
time.sleep(2)
currenttime = time.strftime("%Y-%m-%d_%H-%M-%S", time.localtime())
old_path = os.path.join(path, 'screenshot.png')
new_path = os.path.join(path, '{}.png'.format(currenttime))
time.sleep(1)
os.rename(old_path, new_path)
if __name__ == "__main__":
screenshot()