首页 >> 大全

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

2023-09-21 大全 60 作者:考证青年

目录 3. +实现截图实例4. TODO

1.安卓开发常用术语介绍

NDK ( Kit) :属于SDK的一种。针对平台的一种开发工具包,它允许开发者使用C、C++和其他本地编程语言来开发应用程序的一部分或全部功能。

JDK (Java Kit) :是面向Java开发人员使用的SDK。

2. 各种SDK的安装(陆续补充ing)

后续发现还是用 进行进行管理更方便。

2.1 JDK的安装

安装过程参考JDK的下载与安装(详细过程)

如果出现javac无法运行参考 10 java命令可以运行,但是‘javac‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件(已解决)

安卓测试界面__安卓初始化代码

2.2 单独安装 SDK部分组件

Win10 配置ADB安装2023.7.12版本

2.3 NDK的安装

Win10 配置NDK安装2023.7.19版本

3. +实现截图实例

原本配置需要安装git、ndk、adb等,参考在下编译与运行,很麻烦。参考使用+实现录屏功能中利用实现。

pip

是网易开源的一款基于 的、跨平台的UI自动化测试框架。

代码

import cv2
import airtest.core.api as air_api
from 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秒,对不上,需要看看是怎么使用的。

通过调试,在里面进行,只需要0.2~0.3s,应该是完整运行时是第一次启动(手机中相关进程第一次启动用时可能较长,启动后用向手机进行请求时就只需要截图时间了)

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了