当前位置: 首页 > news >正文

【uiautomator】自动化测试camera【一】

文章目录

  • 1 概述
  • 2 准备工作
  • 3 写个demo

1 概述

本文档是自己写andorid camera自动化测试的随笔
测试机器为
OPPO Find x7
测试Apk为oppo的系统相机.

2 准备工作

我电脑是有装conda环境的,所以我直接用conda创建虚拟环境专门用于相关的测试.
https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/
下载对应的系统版本即可
linux对应sh文件.
windows直接双击exe文件安装即可.

我不是很喜欢直接破坏本机电脑的python环境,所以我创建了一个新的虚拟环境. 这种包管理更为安全,pip炸了就炸了 打不了删了重新建一个

conda create -n py3 python=3.7  #创建python3.7的虚拟环境
conda activate  py3             #激活虚拟环境
#conda deactivate               #退出虚拟环境
conda info --envs               #查看虚拟环境
# conda environments:
#
py2                      C:\Users\Admin\.conda\envs\py2
py3                      C:\Users\Admin\.conda\envs\py3
base                     D:\conda

激活后会显示当前所在的环境名字,比如我这边是py3.

(py3) D:\Pr\demo>

安装需要的包

pip install uiautomator2
pip install pyyaml

电脑要提前安装好相关的adb.直接去谷歌官网下就行,linux下直接apt-get install adb就行.
如果adb 版本有问题,可以到https://developer.android.com/studio/releases/platform-tools下载最新版.然后添加到
我需要先获得测试apk的包名,本质上我都去调用一些api接口.
这个包名可以替换的.
清下log,然后开始抓log.开始抓log后打开你所用的camera app.
adb logcat -c
adb logcat -G 20M
adb logcat -b all >main.txt
打开main.txt log
过滤log 关键字connect call
看到我这边打印的一个

11-11 21:42:43.435  1458  8995 I CameraService: CameraService::connect call (PID 6159 "com.oplus.camera", camera ID 5) and Camera API version 2

com.oplus.camera 就是我用的测试apk的包名,对应的camera ID 5 就是我打开的相机的ID.
话说为什么是5,我记得后摄一般项目都是做成0.
一般remosaic的相机ID是会做别的映射,我打了好多不同模式的,没明白他的映射id是怎么做的.
等有机会我自己写个apk,给这个手机hal的信息慢慢剖出来看下人家产品是怎么做的.
11-11 21:53:24.108 1458 10185 I CameraService: CameraService::connect call (PID 6159 “com.oplus.camera”, camera ID 5) and Camera API version 2
11-11 21:53:27.274 1458 9223 I CameraService: CameraService::connect call (PID 6159 “com.oplus.camera”, camera ID 1) and Camera API version 2
11-11 21:53:46.899 1458 2400 I CameraService: CameraService::connect call (PID 6159 “com.oplus.camera”, camera ID 2) and Camera API version 2
扯远了.

3 写个demo

新建一个python文件,名字为oppoCam.py
写个简单的demo

# -*- coding: utf-8 -*-import uiautomator2 as u2
import yaml                         # 引入yaml模块 预留我后续用这个做基本配置文件
import time                         # 引入time模块 预留我后续用这个做延时
if __name__ == '__main__':package = "com.mediatek.camera" # 设置需要运行的包名sn = 'YD9HVGXGZLA6ZHCQ'         # 设置手机序列号 adb devices -l 获取d = u2.connect(sn)              # 连接手机d.app_start(package)            # 启动appprint(d.info)                   # 打印手机信息

第一次运行好像还会从github上下载ATX和uiautomator2的包,下载完后就可以运行了.

python oppoCam.py

第二次运行就很快了.
我这边打印出来了一些信息

(py3) D:\Pr\demo\py>python oppoCam.py
{'currentPackageName': 'com.android.launcher', 'displayHeight': 2256, 'displayRotation': 0, 'displaySizeDpX': 360, 'displaySizeDpY': 792, 'displayWidth': 1080, 'productName': 'PHZ110', 'screenOn': True, 'sdkInt': 34, 'naturalOrientation': True}

自此相关的准备工作都已经完成可以做后续的拍照/切换/录像等操作了.
剩余部分另外整理


http://www.mrgr.cn/news/70664.html

相关文章:

  • WPF 应用程序中使用 Prism 框架时,有多种方式可以注册服务和依赖项
  • windows中docker安装redis和redisinsight记录
  • 【AI工作流】FastGPT - 深入解析FastGPT工作流编排:从基础到高级应用的全面指南
  • H.265流媒体播放器EasyPlayer.js网页web无插件播放器:如何优化加载速度
  • gitlab项目如何修改主分支main为master,以及可能遇到的问题
  • Android 单元测试环境配置问题 Execution failed for task ‘:mergeDebugJavaResource‘.
  • 简述 synchronized 和 java.util.concurrent.locks.Lock 的异同?
  • Scrapy搭配Selenium爬取豆瓣电影250排行榜动态网页数据
  • Linux中线程的基本概念与线程控制
  • 深⼊理解指针(5)[回调函数、qsort相关知识(qsort可用于各种类型变量的排序)】
  • YOLOv11融合CVPR[2020]自校准卷积SCConv模块及相关改进思路|YOLO改进最简教程
  • 前端知识点---字符串的8种拼接方法(Javascript)
  • 边缘检测的100种方法
  • PCL 点云拟合 Ransac拟合空间球体
  • 基于图的去中心化社会推荐过滤器
  • 麒麟服务器工作站SP1 arm环境qt5.6.3源码编译
  • 【大咖云集 | IEEE计算智能学会广州分会支持】第四届信息技术与当代体育国际学术会议(TCS 2024,12月13-15日)
  • 数据库基础(14) . MySQL存储过程
  • 嵌入式学习-C嘎嘎-Day01
  • 基于stm32的智能晾衣杆(开源)
  • uniapp中webview全屏不显示导航栏解决方案
  • 20个Python自动化脚本,提升编程能力
  • 图形几何之美系列:仿射变换矩阵之先转后偏
  • 元岭村停车场的收费情况探寻
  • C#-objetc中的方法
  • mysql数据库(四)单表查询