如何使用 `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()  # 记录开始时间

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/66070.shtml

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

相关文章

Swift Combine 学习(七):实践应用场景举例

Swift Combine 学习(一):Combine 初印象Swift Combine 学习(二):发布者 PublisherSwift Combine 学习(三):Subscription和 SubscriberSwift Combine 学习(四&…

使用 PyInstaller 和 hdiutil 打包 Tkinter 应用为 macOS 可安装的 DMG 文件

在这篇文章中,我们将逐步演示如何将基于 Python 的 Tkinter 应用程序打包成一个 macOS .app 文件,并将其封装为 .dmg 文件,供用户安装。 环境准备 在开始之前,请确保您的开发环境满足以下条件: macOS 系统。安装了 …

DC-2 靶场渗透

目录 环境搭建 开始渗透 扫存活 扫端口 扫服务 看一下80端口 看一下指纹信息 使用wpscan扫描用户名 再使用cewl生成字典 使用wpscan爆破密码 登陆 使用7744端口 查看shell rbash绕过 切换到jerry用户 添加环境变量 现在可以使用su命令了 提权 使用git提权 环…

如何在 Ubuntu 22.04 上优化 Apache 以应对高流量网站教程

简介 在本教程中,我们将学习如何优化 Apache 以应对高流量网站。 当运行高流量网站时,确保你的 Apache Web 服务器得到优化对于有效处理负载至关重要。在本指南中,我们将介绍配置 Apache 以提高性能和可扩展性的基本技巧。 为高流量网站优…

安卓NDK视觉开发——手机拍照文档边缘检测实现方法与库封装

一、项目创建 创建NDK项目有两种方式,一种从新创建整个项目,一个在创建好的项目添加NDK接口。 1.创建NDK项目 创建 一个Native C项目: 选择包名、API版本与算法交互的语言: 选择C版本: 创建完之后,可…

02.01、移除重复节点

02.01、[简单] 移除重复节点 1、题目描述 编写代码,移除未排序链表中的重复节点。保留最开始出现的节点。 2、解题思路 为了实现这一目标,我们可以使用一个哈希表(或集合)来记录已经遇到的节点值,逐步遍历链表并删…

反向传播算法的偏置更新步骤

偏置的更新步骤 假设我们有一个三层神经网络(输入层、隐藏层和输出层),并且每层的激活函数为 sigmoid 函数。我们需要更新隐藏层和输出层的偏置。以下是详细的步骤: 1. 计算误差项(Error Term) 输出层的…

【Ubuntu】不能连上网络

1. ping路由器的IP地址 ping 192.168.1.1 如果ping不通的话,可能是网络故障导致的。需要重启配置ip地址。配置文件 sudo vi /etc/network/interface 2. ping 8.8.8.8 如果ping不通的话,可能是路由器不能链接往外网; 或者路由器显示了当…

深入解析爬虫中的算法设计:提升效率与准确度

在网络爬虫(Web Scraping)中,设计高效、准确的算法是关键,尤其当面对大量数据或复杂的网站结构时,精心设计的爬虫算法能显著提高爬取速度并提升数据提取的准确性。本篇博客将详细讲解爬虫算法的设计与优化策略&#xf…

《C++设计模式》策略模式

文章目录 1、引言1.1 什么是策略模式1.2 策略模式的应用场景1.3 本文结构概览 2、策略模式的基本概念2.1 定义与结构2.2 核心角色解析2.2.1 策略接口(Strategy)2.2.2 具体策略实现(ConcreteStrategy)2.2.3 上下文(Cont…

Spring源码分析之事件机制——观察者模式(一)

目录 事件基类定义 事件监听器接口 事件发布者接口及实现 事件广播器实现 小小总结 Spring源码分析之事件机制——观察者模式(一)-CSDN博客 Spring源码分析之事件机制——观察者模式(二)-CSDN博客 Spring源码分析之事件机制…

Spring Security(maven项目) 3.0.2.4版本

前言: 通过实践而发现真理,又通过实践而证实真理和发展真理。从感性认识而能动地发展到理性认识,又从理性认识而能动地指导革命实践,改造主观世界和客观世界。实践、认识、再实践、再认识,这种形式,循环往…

stm32 移植RTL8201F(正点原子例程为例)

最近在工作中需要使用RTL8201F,在网上找了很多帖子,没有找到合适的,自己翻资料移植了一个。 模板工程使用的是正点原子的f407探索版的例程,原子使用的是LAN8720,需要把他的驱动修改成为我们自己用的RTL8201F。 1.将PHY_TYPE改成我…

Unity学习笔记(四)如何实现角色攻击、组合攻击

前言 本文为Udemy课程The Ultimate Guide to Creating an RPG Game in Unity学习笔记 实现动画 首先实现角色移动的动画,动画的实现过程在第二篇,这里仅展示效果 attack1 触发攻击动画 实现脚本 接下来我们通过 Animator 编辑动画之间的过渡&#…

redis的集群模式与ELK基础

一、redis的集群模式 1.主从复制 (1)概述 主从模式:这是redis高可用的基础,哨兵和集群都是建立在此基础之上。 主从模式和数据库的主从模式是一样的,主负责写入,然后把写入的数据同步到从服务器&#xff…

一套比较简单的仓储系统

自己编写的一套比较简单的仓储系统,多仓库,入库、出库、明细、统计等相关功能 基于偌依的单体架构:springbootvueuniapp 后端:https://download.csdn.net/download/qq_30641447/90214834 前端:https://download.csdn…

网络IP协议

IP(Internet Protocol,网际协议)是TCP/IP协议族中重要的协议,主要负责将数据包发送给目标主机。IP相当于OSI(图1)的第三层网络层。网络层的主要作用是失陷终端节点之间的通信。这种终端节点之间的通信也叫点…

设计模式 创建型 原型模式(Prototype Pattern)与 常见技术框架应用 解析

原型模式(Prototype Pattern)是一种创建型设计模式,其核心思想在于通过复制现有的对象(原型)来创建新的对象,而非通过传统的构造函数或类实例化方式。这种方式在需要快速创建大量相似对象时尤为高效&#x…

MySQL(二)MySQL DDL数据库定义语言

1. MySQL DDL数据库定义语言 1.1. MySQL定义语言 进入MySQL mysql -u root -p(回车后输入密码,即可进入mysq1)1.1.1. 数据库操作 (1)查看数据库 mysql>show databases;注:MySQL语句分隔符为“;”   mysql库很重要它里面有…

前端页面上传文件:解决 ERR_UPLOAD_FILE_CHANGED

文章目录 引言I 问题 ERR_UPLOAD_FILE_CHANGED问题重现步骤原因II 解决方法将文件转换为base64再转回file检测文件内容是否发生变更III 知识扩展发送一个包含文件和文本的multipart/form-data请求签名优化引言 文件上传应用场景:船舶设备的新增导入(基础信息:出厂编号)船舶…