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

如何使用 `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 d
    except 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.kler.cn/a/466260.html

相关文章:

  • SQL—Group_Concat函数用法详解
  • Scala 访问修饰符
  • 【Rust自学】9.4. 什么时候该使用panic!
  • 【2025最新计算机毕业设计】基于Spring Boot+Vue影院购票系统(高质量源码,提供文档,免费部署到本地)
  • 四、VSCODE 使用GIT插件
  • Redis(二)value 的五种常见数据类型简述
  • 局网设置mongodb服务的方法。
  • Couchbase、ClickHouse 和 Apache Doris在架构、功能、应用场景等方面的详细对比
  • 人工智能平台 PAI
  • 数据库运维学习选择
  • 深入理解计算机中的补码、反码、原码
  • Nginx根据不同ip段配置不同的访问首页
  • 逻辑回归(Logistic Regression) —— 机器学习中的经典分类算法
  • 【Nginx Docker】Office Word Web addin 部署nginx docker
  • 2024转转技术年货发布啦
  • 中建海龙:科技助力福城南产业片区绿色建筑发展
  • HarmonyOS鸿蒙开发 应用开发常见问题总结(持续更新...)
  • Python 链接 Pcomm
  • [CTF/网络安全] 攻防世界 simple_js 解题详析
  • python 插入排序(Insertion Sort)
  • MyBatis一级缓存与二级缓存详解
  • Spring Boot项目中分布式锁实现方案:Redisson
  • Java(四十四)file
  • JavaScript Math(算数) 对象的用法详解
  • 【UE5 C++课程系列笔记】17——DeveloperSettings(开发者设置)的基本使用——读取修改Settings
  • 初步认识UML