【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.mzph.cn/news/885667.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用 Elasticsearch 构建食谱搜索(一)

作者:来自 Elastic Andre Luiz 了解如何使用 Elasticsearch 构建基于语义搜索的食谱搜索。 简介 许多电子商务网站都希望增强其食谱搜索体验。正确使用语义搜索可以让客户根据更自然的查询(例如 “something for Valentines Day - 情人节的礼物” 或 “…

SystemVerilog学习笔记(七):函数与任务

函数 函数的主要用途是编写一段可以随时调用n次的代码,只需调用函数名即可,不需要任何模拟时间来执行。函数是返回类型,仅返回函数声明中提到的单个值,如果未声明则返回一个位的值。 语法: initial begin functio…

物理验证Calibre LVS | SMIC Process过LVS时VNW和VPW要如何做处理?

SMIC家工艺的数字后端实现PR chipfinish写出来的带PG netlist如下图所示。我们可以看到标准单元没有VNW和VPW pin的逻辑连接关系。 前几天小编在社区星球上分享了T12nm ananke_core CPU低功耗设计项目的Calibre LVS案例,就是关于标准单元VPP和VBB的连接问题。 目前…

【编程概念基础知识】

、编程基础 一、面向对象的三大特性 1、封装: 盒子、零件、按钮 隐藏对象 的内部状态,并且只通过对象的方法来访问数据 想象你有一个小盒子(这个盒子就是一个类),里面装着一些零件(这些零件就是数据&a…

Oracle 第23章:大数据与NoSQL集成

第23章 大数据与NoSQL集成 在当今的数字化时代,数据量的爆炸性增长给传统的关系型数据库带来了前所未有的挑战。为了应对这些挑战,NoSQL(Not Only SQL)数据库应运而生,它提供了灵活的数据模型和可扩展的架构来处理大规…

纯前端实现在线预览excel文件(插件: LuckyExcel、Luckysheet)

概述 在实际开发中,遇到需要在线预览各种文件的需求,最近遇到在线预览excel文件的需求,在此记录一下!本文主要功能实现,用于插件 LuckyExcel ,Luckysheet!废话不多说,上代码&#xf…

实验05多重循环---7-09 打印金字塔图案

打印一个由 m 行字符 * 组成的金字塔形图案。 输入格式: 输入一个整数,表示行数 m,其中 m 满足 2≤m≤10。 输出格式: 由字符 * 组成的 m 行金字塔形图案。 输入样例: 5 输出样例: **************** *********//自己写的 #define _CRT_SECURE_NO_WAR…

LocalDate和LocalDateTime类

在Java 8中引入的LocalDate表示一个格式为yyyy-MM-dd的日期,如2024-06-13。它不存储时间或时区。我们可以从LocalDate中获取许多其他的日期字段,如年日(day-of-year)、周日(day-of-week)、月日(month-of-year)等等。 1 初始化 LocalDate以年月日的格式输…

信息安全工程师(82)操作系统安全概述

一、操作系统安全的概念 操作系统安全是指操作系统在基本功能的基础上增加了安全机制与措施,从而满足安全策略要求,具有相应的安全功能,并符合特定的安全标准。在一定约束条件下,操作系统安全能够抵御常见的网络安全威胁&#xff…

gitlab ci/cd搭建及使用笔记

记录下使用gitlab的ci/cd的devops构建过程中,一些易忘点或者踩坑点: 官方文档中英文(建议英文) https://docs.gitlab.com/ee/ci/yaml/artifacts_reports.html https://gitlab.cn/docs/jh/ci/pipelines/schedules.html为什么创建了…

SQL注入(SQL Injection)详解

SQL注入(SQL Injection)是一种代码注入技术,它通过在应用程序的输入字段中插入或“注入”恶意的SQL语句,从而操控后端数据库服务器执行非预期的命令。这种攻击方式常用于绕过应用程序的安全措施,未经授权地访问、修改或…

小程序源码-模版 100多套小程序(附源码)

一、搭建开发环境 搭建环境可以从这里开始: 微信小程序从零开始开发步骤(一)搭建开发环境 - 简书 二、程序示例 1、AppleMusic https://download.csdn.net/download/m0_54925305/89977187 2、仿B站首页 https://download.csdn.net/downlo…

安装baidubce库

直接pip install baidubce会带来一系列后续文件缺失问题,应该: pip install bce-python-sdk

【鉴权】提升 JWT 安全性的最佳实践:防范常见风险与应对策略

目录 引言一、JWT简介二、JWT的安全风险与防护措施2.1 签名算法不安全2.2 中间人攻击(MITM)2.3 重放攻击2.4 防止JWT泄露2.5 密钥管理与轮换2.6 验证JWT的来源和受众2.7 监控与审计 三、提高 JWT 安全性的关键措施3.1 选择安全的签名算法3.2 强制使用 HT…

Java实习面经系列(一)

1.自我介绍 2.问项目有关 了.线程池的理解 4.hashmap扩容,为什么扩两倍 5.jvm新生代老年代 6.垃圾回收算法 7.聚簇索引和非聚簇索引区别,b树,跳表,二叉树比较。哈希索引和b树的索引比较 8.存储引擎 9.回表是什么 10.MySQL语句查询…

【Java】-- 异常

1. 异常的概念与体系结构 1.1 异常的概念 在Java中,将程序执行过程中发生的不正常行为称为异常。 public class Test {public static void main(String[] args) {//算术(ArithmeticException)异常 // int a 5/0; // System.…

从零开始:利用Portainer CE和cpolar搭建NextCloud私有云存储

文章目录 前言1. 在PortainerCE中创建NextCloud容器2. 公网远程访问本地NextCloud容器2.1 内网穿透工具安装3.2 创建远程连接公网地址 3. 固定NextCloud私有云盘公网地址 前言 本文将介绍如何在本地利用Portainer CE的可视化界面创建NextCloud私有云盘容器,并通过c…

[安洵杯 2019]easy_web 详细题解

知识点: 编码转换 命令执行 linux空格_关键字绕过 打开页面 发现url 是 /index.php?imgTXpVek5UTTFNbVUzTURabE5qYz0&cmd 有img参数和cmd参数 cmd参数是没赋值的,随便赋值为123456 页面没有反应 鼠标移动到图片下面时发现有东西,当然直接查看页面源代码也可以发现 尝…

第2章 数据的表示和运算

王道学习 考纲内容 (一)数制与编码 进位计数制及其相互转换;定点数的编码表示 (二)运算方法和运算电路 基本运算部件:加法器;算术逻辑单元(ALU)…

Web3 游戏周报(11.03 - 11.09)

回顾上周的区块链游戏概况,查看 Footprint Analytics 与 ABGA 最新发布的数据报告。 【11.03 - 11.09】Web3 游戏行业动态: Ton Accelerator 推出名为「Synergy」的 500 万美元计划,旨在推动跨链创新,创造 TON 用户与 EVM 网络适应…