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

如何使用 `uiautomator2` 控制 Android 设备并模拟应用操作_VIVO手机

在 Android 自动化测试中,uiautomator2 是一个非常强大的工具,能够帮助我们通过 Python 控制 Android 设备执行各种操作。今天,我将通过一个简单的示例,介绍如何使用 uiautomator2 控制 Android 设备,执行特定的应用启动、广告跳过以及其他 UI 操作。此示例的目标是自动化控制 vivo 设备上的音乐应用,并演示如何处理启动广告和其他操作。

环境准备

在开始之前,请确保已安装以下 Python 库:

  1. uiautomator2:这是与 Android 设备交互的核心库。
  2. pytest:用于测试框架,帮助我们更好地组织和运行测试。
  3. timesys:用于控制时间和打印输出。

可以通过以下命令安装所需库:

pip install uiautomator2 pytest
代码实现

接下来,我们将展示如何通过 Python 脚本控制 Android 设备,执行打开应用、跳过广告、点击按钮等操作。

1. 连接设备

首先,我们需要通过 uiautomator2 连接到 Android 设备。连接失败时,我们将打印错误信息并跳过当前测试。

import uiautomator2 as u2
import time
import sys
import pytest# 连接到设备并初始化 uiautomator2
def connect_device():try:# 尝试连接设备d = u2.connect()d.press("home")  # 确保设备在主屏幕print("设备连接成功")return dexcept Exception as e:# 连接失败时打印错误信息print(f"连接设备失败: {e}")pytest.skip("前置条件失败,测试阻塞:连接设备失败")
2. 动态等待

我们可以创建一个函数来模拟动态等待,并且在等待过程中打印剩余的时间。这对于调试和监控测试过程非常有用。

# 模拟动态等待过程,并显示剩余时间
def dynamic_sleep(seconds):for i in range(seconds, 0, -1):print(f"等待中... {i} 秒剩余", end="\r")  # 输出剩余时间sys.stdout.flush()  # 刷新输出time.sleep(1)
3. 自动化操作:打开应用并跳过广告

在实际的应用自动化操作中,我们常常需要跳过启动广告,点击一些按钮来继续操作。在以下的示例中,我们将自动化控制 vivo 设备上的音乐应用,跳过启动广告,并点击按钮进行下一步操作。

# 打开并操作设置应用程序(vivo_neo8_pro打开音乐)
def vivo_neo8_pro_open_bt_music():"""操作并控制vivo 设备上的音乐应用。"""try:start_time = time.time()  # 记录开始时间

相关文章:

如何使用 `uiautomator2` 控制 Android 设备并模拟应用操作_VIVO手机

在 Android 自动化测试中,uiautomator2 是一个非常强大的工具,能够帮助我们通过 Python 控制 Android 设备执行各种操作。今天,我将通过一个简单的示例,介绍如何使用 uiautomator2 控制 Android 设备,执行特定的应用启动、广告跳过以及其他 UI 操作。此示例的目标是自动化…...

在Ubuntu 18.04.6 LTS安装OpenFace流程

一、修改配置:将gcc8,g8作为默认选项 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 100 sudo update-alternatives --config gcc 选择版本,再查看gcc --version sudo update-alternatives --install /usr/bin/g g /usr/bin/g-…...

C 语言的整型提升问题

目录 引言 一、什么是整型提升 二、为什么会有整型提升 三、整型提升的规则 四、整型提升的影响 五、如何避免整型提升带来的问题 六、总结 引言 在 C 语言中,整型提升(Integer Promotion)是一个常常被忽视但却非常重要的概念。理解整…...

第0章 机器人及自动驾驶SLAM定位方法全解析及入门进阶学习建议

嗨,各位同学大家好!笔者自985硕士毕业后,在机器人算法领域已经深耕 7 年多啦。这段时间里,我积累了不少宝贵经验。本专栏《机器人工程师带你从零入门SLAM》将结合下面的SLAM知识体系思维导图及多年的工作实战总结,将逐…...

video.js视频播放上手

html案例 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title>videojs视频播放</title> </head> <link href"https://cdnjs.cloudflare.com/ajax/libs/video.js/7.3.0/video-js.min.cs…...

【LLM-Agent】Building effective agents和典型workflows

note Anthropic的工程经验&#xff1a; 大道至简&#xff0c;尽量维护系统的简洁&#xff1b;尽量让过程更加透明&#xff08;因为你依赖的是LLM的决策&#xff0c;如果只看输出不看过程&#xff0c;很容易陷入难以debug的情况&#xff09;&#xff1b;对LLM需要调用的工具&am…...

《量子比特大阅兵:不同类型量子比特在人工智能领域的优劣势剖析》

在科技的前沿&#xff0c;量子比特与人工智能的融合正开启一扇全新的大门。不同类型的量子比特&#xff0c;如超导、离子阱、光量子等&#xff0c;在与人工智能结合时展现出独特的优势与劣势。 超导量子比特 超导量子比特是目前应用较为广泛且研究相对成熟的量子比特类型。它…...

《探秘开源大模型:AI 世界的“超级引擎”》

《探秘开源大模型:AI 世界的“超级引擎”》 一、开源大模型崛起之路二、开源大模型发展历程回顾(一)早期奠基:理论突破与初步实践(二)快速发展:百花齐放的模型格局(三)当下态势:走向成熟与多元融合三、开源大模型核心技术剖析(一)Transformer 架构:基石之稳(二)…...

el-table行列转换简单版,仅限单行数据

原始数据格式如下&#xff0c;如果不是此格式&#xff0c;请转换成以下格式在进行以下操作 [{ label: name, value: Tom },{ label: age, value: 25 },{ label: country, value: UK } ]代码如下 <template><el-table :data"tableData" style"width: …...

2025年1月4日蜻蜓q旗舰版st完整开源·包含前后端所有源文件·开源可商用可二开·优雅草科技·优雅草kir|优雅草星星|优雅草银满|优雅草undefined

2025年1月4日蜻蜓q旗舰版st完整开源包含前后端所有源文件开源可商用可二开优雅草科技优雅草kir|优雅草星星|优雅草银满|优雅草undefined 产品介绍&#xff1a; 本产品主要贡献者优雅草科技优雅草kir|优雅草星星|优雅草银满|优雅草undefined-青史留名&#xff0c;时光如川浪淘…...

SQL把字符串按逗号分割成记录

在 SQL 中&#xff0c;可以通过以下方法将字符串按逗号分割&#xff0c;并将每个分割的值作为单独的记录插入到结果集中。以下是针对不同数据库系统的实现方法&#xff1a; 1. 使用 STRING_SPLIT&#xff08;SQL Server 2016&#xff09; STRING_SPLIT 是 SQL Server 提供的内置…...

C#设计模式(行为型模式):观察者模式

C#设计模式&#xff1a;观察者模式&#xff0c;让对象间通信更优雅 在软件开发中&#xff0c;我们经常会遇到一个对象的状态发生改变&#xff0c;其他对象需要自动更新或做出相应反应的场景。例如&#xff1a; GUI事件处理&#xff1a; 当用户点击按钮时&#xff0c;按钮需要…...

pytorch镜像源

我以为的 pip install torch2.3.1cu118 torchvision0.18.1cu118 torchaudio2.3.1cu118 -f https://download.pytorch.org/whl/torch_stable.html实际上&#xff0c;有很多加速方案 为提高下载速度可以使用国内的镜像源来安装与 CUDA 11.8 兼容的 PyTorch。 方法 1&#xff1a…...

Verilog语法之常用行为级语法

摘要&#xff1a;本文主要介绍了一些在verilog中的行为级语法&#xff0c;并且提供了大量的运行实际例子&#xff0c;可以通过这些例子感受行为级语法在仿真中的巨大作用。 概述&#xff1a;行为级语法是RTL级的上一层&#xff0c;或者说是比RTL级更高级的语法&#xff0c;其语…...

PADS Logic原理图中有很多页原理图,如何(怎样)删除其中一页或者多页

我们在进行PADS Logic进行原理图设计的时候&#xff0c;有时候可能遇到一次性设计了很多页的原理图&#xff0c;比如说十几页的原理图。那么我们在进行PADS Layout的时候&#xff0c;可能将这些原理图绘制两块板或者多块PCB板&#xff0c;那么这时候我们需要将其中的一张原理图…...

蓝色简洁引导页网站源码

一款蓝色的简洁引导页&#xff0c;适合资源分发和网站备用引导。 1.源码上传至虚拟机或者服务器 2.绑定域名和目录 3.访问域名安装 4.安装完成后就行了 https://pan.quark.cn/s/b2d8b9c5dc7f https://pan.baidu.com/s/17h1bssUNhhR9DMyNTc-i9Q?pwd84sf https://caiyun.139.com…...

Apache PDFBox添加maven依赖,pdf转成图片

要使用Apache PDFBox将PDF文件转换为图片&#xff0c;并将其添加到Maven项目中&#xff0c;您可以按照以下步骤操作&#xff1a; 1. 添加Maven依赖 在您的pom.xml文件中添加Apache PDFBox的依赖。请确保使用最新版本的PDFBox库。截至2025年&#xff0c;以下是推荐的配置&…...

mybatis 和 mybatisPlus 兼容性问题

项目采用的是 mybatis&#xff0c; 后续引入了 mybatisPlus&#xff0c;用 mybatisX 创建的四个类一直报错&#xff0c;提示找不到符号&#xff0c;意识到 mybatis 和 mybatisPlus 的兼容性问题&#xff0c;通过修改配置 两者的配置如下 #配置mybatis配置 mybatis:type-aliase…...

Mono里运行C#脚本23—mono_jit_exec

前面已经分析一部分代码,可以打下基础知识,当然还有很多其它部分的内容,没有深入去了解。 接着下来,我们去探索一下怎么样找到执行应用程序的入口。 在这个嵌入脚本程序里,有一个这样的函数调用: main_function (domain, file, argc - 1, argv + 1); 这个函数的作用,…...

第十一章 图论

/* * 题目名称&#xff1a;连通图 * 题目来源&#xff1a;吉林大学复试上机题 * 题目链接&#xff1a;http://t.cn/AiO77VoA * 代码作者&#xff1a;杨泽邦(炉灰) */#include <iostream> #include <cstdio>using namespace std;const int MAXN 1000 10;int fathe…...

纯前端实现将pdf转为图片(插件pdfjs)

需求来源 预览简历功能在移动端&#xff0c;由于用了一层iframe把这个功能嵌套在了app端&#xff0c;再用一个iframe来预览&#xff0c;只有ios能看到&#xff0c;安卓就不支持&#xff0c;查了很多资料和插件&#xff0c;原理基本上都是用iframe实现的。最终转换思路&#xf…...

【IT人物系列】之MySQL创始人

前言 当今世界有无数的人构成&#xff0c;其中有些人做了一些改变世界的事情&#xff0c;比如&#xff1a;乔布斯缔造了Apple帝国&#xff0c;‌詹姆斯高斯林创造了Java语言等。正是这些优秀的人做的这些优秀的事情&#xff0c;让这个世界更加美好。因此他们值得铭记。 从今天…...

在Typora中实现自动编号

文章目录 在Typora中实现自动编号1. 引言2. 准备工作3. 自动编号的实现3.1 文章大纲自动编号3.2 主题目录&#xff08;TOC&#xff09;自动编号3.3 文章内容自动编号3.4 完整代码 4. 应用自定义CSS5. 结论 在Typora中实现自动编号 1. 引言 Typora是一款非常流行的Markdown编辑…...

Single Shot MultiBox Detector(SSD)

文章目录 摘要Abstract1. 引言2. 框架2.1 网络结构2.2 损失函数2.3 训练细节 3. 创新点和不足3.1 创新点3.2 不足 参考总结 摘要 与Faster R-CNN相比&#xff0c;SSD是一个真正的单阶段多目标检测模型&#xff0c;同时也是一个全卷积网络&#xff0c;不仅检测准确率高&#xff…...

kafka生产者专题(原理+拦截器+序列化+分区+数据可靠+数据去重+事务)

目录 生产者发送数据原理参数说明代码示例&#xff08;同步发送数据&#xff09;代码示例&#xff08;异步&#xff09; 异步和同步的区别同步发送定义与流程特点 异步发送定义与流程特点 异步回调描述代码示例 拦截器描述代码示例 消息序列化描述代码示例&#xff08;自定义序…...

【React+TypeScript+DeepSeek】穿越时空对话机

引言 在这个数字化的时代&#xff0c;历史学习常常给人一种距离感。教科书中的历史人物似乎永远停留在文字里&#xff0c;我们无法真正理解他们的思想和智慧。如何让这些伟大的历史人物"活"起来&#xff1f;如何让历史学习变得生动有趣&#xff1f;带着这些思考&…...

公共数据授权运营系统建设手册(附下载)

在全球范围内&#xff0c;许多国家和地区已经开始探索公共数据授权运营的路径和模式。通过建立公共数据平台&#xff0c;推动数据的开放共享&#xff0c;促进数据的创新应用&#xff0c;不仅能够提高政府决策的科学性和公共服务的效率&#xff0c;还能够激发市场活力&#xff0…...

基于HTML和CSS的旅游小程序

一、技术基础 HTML&#xff08;HyperText Markup Language&#xff09;&#xff1a;超文本标记语言&#xff0c;用于定义网页的内容和结构。在旅游小程序中&#xff0c;HTML用于搭建页面的基本框架&#xff0c;包括标题、段落、图片、链接等元素&#xff0c;以及用于交互的表单…...

maven之插件调试

当使用maven进行项目管理的时候&#xff0c;可能会碰到一些疑难问题。网上资料很少&#xff0c;可能会想着直接调试定位问题。这里以maven-compiler-plugin为例&#xff1a; &#xff08;1&#xff09;准备maven-compiler-plugin源码 进入maven 官网-》Maven Plugins-》找到对…...

SQL Sever 数据库损坏,只有.mdf文件,如何恢复?

SQL Sever 数据库损坏&#xff0c;只有.mdf文件&#xff0c;如何恢复 在SQL Server 2008中&#xff0c;如果只有MDF文件而没有LDF文件&#xff0c;附加数据库的过程会稍微复杂一些。以下是几种可能的方法 一、使用紧急模式重建日志文件 1、新建一个同名的数据库。 2、停止SQ…...