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

【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)            # 启动app
    print(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.kler.cn/a/395097.html

相关文章:

  • 怎么样绑定域名到AWS(亚马逊云)服务器
  • QTcpSocket 服务端和客户端
  • debian 系统更新升级
  • 67页PDF |埃森哲_XX集团信息发展规划IT治理优化方案(限免下载)
  • RabbitMQ高效的消息队列中间件原理及实践
  • 数字孪生在智慧能源项目中的关键作用,你了解多少?
  • 【视觉SLAM】2-三维空间刚体运动的数学表示
  • 安全见闻-泷羽sec课程笔记
  • Mysql-DDL语句
  • Leetcode 968-监控二叉树
  • LVDS高速背板总线:打造分布式I/O高效数据传输新境界
  • SHA-256哈希函数
  • 国信证券造访图为科技,共探科技与资本交融新契机
  • 【2024软考架构案例题】你知道什么是 RESTful 风格吗?
  • python-有关等差数列的基础知识
  • Unity图形学之Shader2.0 Blurning
  • 《深度学习》VGG网络
  • 【算法】区间DP
  • A3超级计算机虚拟机,为大型语言模型LLM和AIGC提供强大算力支持
  • King3399(ubuntu文件系统)wifi设备树分析
  • 学习日志009--面向对象的编程
  • 前后端、网关、协议方面补充
  • 41页PPT | 华为业务流程架构全景视图:全业务域L1-L3级流程全案
  • python中父类和子类继承学习
  • Django处理前端请求的流程梳理
  • 通过命令学习k8s