二 自动化测试:安卓机初探与Python实现andriod截图实例

目录3. +实现截图实例4. TODO
1.安卓开发常用术语介绍
NDK (Kit) :属于SDK的一种 。针对平台的一种开发工具包,它允许开发者使用C、C++和其他本地编程语言来开发应用程序的一部分或全部功能 。
JDK (JavaKit) :是面向Java开发人员使用的SDK 。
2. 各种SDK的安装(陆续补充ing)
后续发现还是用 进行进行管理更方便 。
2.1 JDK的安装
安装过程参考JDK的下载与安装(详细过程)
如果出现javac无法运行参考 10 java命令可以运行,但是‘javac‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件(已解决)

二  自动化测试:安卓机初探与Python实现andriod截图实例

文章插图
2.2 单独安装 SDK部分组件
Win10 配置ADB安装2023.7.12版本
2.3NDK的安装
Win10 配置NDK安装2023.7.19版本
3. +实现截图实例
原本配置需要安装git、ndk、adb等,参考在下编译与运行,很麻烦 。参考使用+实现录屏功能中利用实现 。
pip
是网易开源的一款基于的、跨平台的UI自动化测试框架 。
代码
import cv2import airtest.core.api as air_apifrom airtest.core.helper import Gdef init_device():# auto_setup(basedir=None, devices=None, logdir=None, project_root=None, compress=None)# auto_setup 是一个用来初始化环境的接口,# 5个参数可以设置当前脚本所在的路径basedir、指定运行脚本的设备devices、设置默认的log路径logdir、设置脚本父路径方便 using 接口的调用和屏幕截图的压缩比率 。# 可设置脚本运行时的log保存路径,默认值为None则不保存log,如果设置为True则自动保存在/log目录中 。print(__file__)air_api.auto_setup(__file__, logdir=True, devices=["Android:///", ])# 如果当前文件包含在 sys.path 里面,那么 __file__ 返回一个相对路径# 如果当前文件不包含在 sys.path 里面,那么 __file__ 返回一个绝对路径(此处我的文件不包含在sys.path中)def img_scale(image, size=612):# 输入你想要resize的图像高 。height, width = image.shape[0], image.shape[1]# 等比例缩放尺度 。scale = height / size# 获得相应等比例的图像宽度 。width_size = int(width / scale)# resizeimage_resize = cv2.resize(image, (width_size, size))return image_resizedef resolution_log():# 以手机屏幕为例,iphonex像素分辨率为1125x2436,是指屏幕横向能显示1125个物理像素点,纵向能显示2436个物理像素点 。width = G.DEVICE.display_info['width']height = G.DEVICE.display_info['height']print('device independent pixels:', width, '×', height)def lp_screen():if G.DEVICE.display_info['orientation'] in [1, 3]:print('landscape')height = G.DEVICE.display_info['width']width = G.DEVICE.display_info['height']else:print('portrait')height = G.DEVICE.display_info['height']width = G.DEVICE.display_info['width']def snap2show(show=True):img = G.DEVICE.snapshot()if show:img = img_scale(img)cv2.imshow("src_image1", img)cv2.waitKey(0)if __name__ == '__main__':init_device()# 初始化设备lp_screen()# 查看屏幕状态:横屏landscape or 竖屏portraitresolution_log()# 查看分辨率device independent pixelsimport times = time.time()snap2show(show=False)e = time.time()print('snap time:', e - s)
效果演示:
截图效果:
4. TODO 自学一下框架,看看源码、使用文档为什么里的截图仍然需要3.02s?看网上说为0.8秒,对不上,需要看看是怎么使用的 。
【二自动化测试:安卓机初探与Python实现andriod截图实例】通过调试,在里面进行,只需要0.2~0.3s,应该是完整运行时是第一次启动(手机中相关进程第一次启动用时可能较长,启动后用向手机进行请求时就只需要截图时间了)