在 Android 自动化测试中,uiautomator2
是一个非常强大的工具,能够帮助我们通过 Python 控制 Android 设备执行各种操作。今天,我将通过一个简单的示例,介绍如何使用 uiautomator2
控制 Android 设备,执行特定的应用启动、广告跳过以及其他 UI 操作。此示例的目标是自动化控制 vivo 设备上的音乐应用,并演示如何处理启动广告和其他操作。
环境准备
在开始之前,请确保已安装以下 Python 库:
uiautomator2
:这是与 Android 设备交互的核心库。pytest
:用于测试框架,帮助我们更好地组织和运行测试。time
和sys
:用于控制时间和打印输出。
可以通过以下命令安装所需库:
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() # 记录开始时间