用于操作优测设备的python-sdk
Project description
优测 Python UBox
用于操作优测设备的 Python UBox 包,提供简单易用的 API 接口来与优测设备进行交互。
功能特性
- 🚀 简单易用: 提供直观的 Python API 接口
- 🔑 JWT Token管理: 自动token生成、过期检测和懒申请机制
- 🛡️ 错误处理: 完善的异常处理和错误信息
- 📚 类型提示: 完整的类型注解支持
- 🔧 上下文管理: 支持
with语句自动管理连接 - 📱 设备操作: 支持点击、滑动、输入、截图、录制等设备操作
- 🔍 智能识别: 支持UI控件、图像匹配、OCR文字识别等多种定位方式
- 📊 性能监控: 支持设备性能数据采集和分析
- 📝 日志采集: 支持Android/鸿蒙设备logcat日志采集和过滤
- 🚨 ANR/Crash监控: 支持应用ANR和Crash问题检测,自动截图和日志收集
安装
使用 uv 安装(推荐)
# 安装 uv(如果还没有安装)
# 创建虚拟环境
uv venv
# 安装包
uv pip install -U ubox-py-sdk -i https://mirrors.tencent.com/repository/pypi/tencent_pypi/simple
使用 pip 安装
确保python版本>=3.9.5
python -m pip install ubox-py-sdk --index-url https://pypi.tuna.tsinghua.edu.cn/simple --extra-index-url https://mirrors.tencent.com/repository/pypi/tencent_pypi/simple
架构说明
-
默认模式(自动占用设备)
- 特点:自动占用、续期、释放设备
-
默认模式(使用预获取的authCode)
- 适用:已有authCode
- 特点:跳过占用流程,更稳定可靠
-
本地模式
- 适用:仅限本地设备调试
- 特点:直接访问,性能更好
- 注意:仅限本地调试自动化脚本
快速开始
运行示例
我们提供了完整的示例文件来帮助你快速上手:
# 运行基础示例文件(包含logcat功能演示)
python examples/example.py
# 运行事件处理示例
python examples/event_handler_example.py
# 运行设备列表示例
python examples/device_list_example.py
注意: example.py 包含了完整的功能演示,包括:
- 设备操作(点击、滑动、输入等)
- 截图录制功能
- 性能监控采集
- logcat日志采集(仅Android/鸿蒙设备)
基础使用
from ubox_py_sdk import UBox, UBoxConnectionError, UBoxAuthenticationError, OSType, RunMode
try:
# 调试模式示例
with UBox(secret_id="sid", secret_key="skey") as client:
device = client.init_device(udid="device-001", os_type=OSType.ANDROID)
except UBoxAuthenticationError as e:
print(f"认证失败: {e}")
except UBoxConnectionError as e:
print(f"连接失败: {e}")
except Exception as e:
print(f"其他错误: {e}")
主要功能示例
设备操作
# 点击操作
device.click_pos([0.5, 0.5]) # 点击屏幕中心
# 滑动操作
device.slide_pos([0.1, 0.5], [0.9, 0.5]) # 左右滑动
# 文本输入
device.input_text("Hello World")
性能监控
# 开始性能采集
device.perf_start(
container_bundle_identifier="com.example.app"
)
# 停止性能采集并保存数据
device.perf_stop("./perf_output")
日志采集(仅Android/鸿蒙)
# 启动logcat日志采集
task = device.logcat_start(
file="./logcat_output/app_logs.txt", # 用户指定的最终保存路径
clear=True,
re_filter=".*MyApp.*" # 过滤包含MyApp的日志
)
# 运行一段时间后停止
time.sleep(10)
success = task.stop() # 停止特定任务
if success:
print(f"logcat日志已保存到: {task.file_path}")
ANR/Crash监控(仅Android/鸿蒙)
# 启动ANR/Crash监控(不采集AM监控日志)
success = device.anr_start(package_name="com.example.app")
if success:
print("ANR监控已启动")
# 运行一段时间后停止监控
time.sleep(30)
# 停止监控并下载文件
result = device.anr_stop(output_directory="./anr_output")
print(f"监控结果: ANR={result['anr_count']}, Crash={result['crash_count']}")
print(f"截图文件: {result['screenshots']}")
print(f"日志文件: {result['logcat_file']}")
# 启动ANR/Crash监控(采集AM监控日志)
success = device.anr_start(package_name="com.example.app", collect_am_monitor=True)
if success:
print("ANR监控已启动(包含AM监控)")
# 停止监控并下载文件
result = device.anr_stop(output_directory="./anr_output")
print(f"AM监控文件: {result['am_monitor_file']}")
日志配置
UBox SDK 提供了灵活的日志配置功能:
# 默认配置(仅控制台输出)
ubox = UBox(secret_id="sid", secret_key="skey")
# 自定义日志级别
ubox = UBox(
secret_id="sid",
secret_key="skey",
log_level="DEBUG" # 显示详细调试信息
)
# 文件日志输出
ubox = UBox(
secret_id="sid",
secret_key="skey",
log_level="INFO",
log_to_file=True,
log_file_path="logs/ubox.log" # 自动创建目录
)
# 生产环境配置
ubox = UBox(
secret_id="sid",
secret_key="skey",
log_level="WARNING", # 只记录警告和错误
log_to_file=True,
log_file_path="logs/production.log"
)
PhonePlatform 枚举值说明
PhonePlatform.ANDROID = 1: Android设备PhonePlatform.IOS = 2: iOS设备PhonePlatform.HARMONYOS = 3: 鸿蒙设备PhonePlatform.HARMONYOS_NEXT = 4: 鸿蒙NEXT设备
OSType
设备操作系统类型枚举:
OSType.ANDROID: Android设备OSType.IOS: iOS设备OSType.HM: HarmonyOS设备
异常类
UBoxError: 基础异常类UBoxConnectionError: 连接异常UBoxAuthenticationError: 认证异常UBoxValidationError: 数据验证异常UBoxTimeoutError: 超时异常UBoxRateLimitError: 速率限制异常UBoxDeviceError: 设备异常
项目结构
ubox-py-sdk/
├── src/ # 源代码目录
│ └── ubox_py_sdk/ # 主包目录
│ ├── __init__.py # 包初始化文件,导出主要API
│ ├── client.py # 主要客户端类,管理连接和认证
│ ├── device.py # 设备管理类,封装设备操作接口
│ ├── device_operations.py # 设备操作实现,包含各种操作的具体逻辑
│ ├── exceptions.py # 异常定义,包含各种错误类型
│ ├── jwt_util.py # JWT工具类,处理认证token
│ ├── logger.py # 日志工具,提供统一的日志记录
│ └── models.py # 数据模型,定义各种数据结构
├── examples/ # 使用示例目录
│ ├── example.py # 基础功能演示(包含logcat示例)
│ ├── event_handler_example.py # 事件处理示例
│ ├── device_list_example.py # 设备列表示例
│ └── README.md # 示例说明文档
├── api.py # API接口定义文件
├── pyproject.toml # 项目配置文件
├── Makefile # 构建和部署脚本
├── uv.lock # 依赖锁定文件
├── .python-version # Python版本文件
├── README.md # 项目说明文档
├── ubox-py-sdk接口文档.md # 详细接口文档
└── .gitignore # Git忽略文件
编译
uv build
发布包
uv publish --publish-url https://mirrors.tencent.com/repository/pypi/tencent_pypi/simple
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
ubox_py_sdk-0.1.44.tar.gz
(229.6 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
ubox_py_sdk-0.1.44-py3-none-any.whl
(120.5 kB
view details)
File details
Details for the file ubox_py_sdk-0.1.44.tar.gz.
File metadata
- Download URL: ubox_py_sdk-0.1.44.tar.gz
- Upload date:
- Size: 229.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
030ab16e5887eba43dd61d1162bcdf9394b5603f913cd7bfcf97891af805a34b
|
|
| MD5 |
15d6ca4dcfe8b50dac6d09ee65906863
|
|
| BLAKE2b-256 |
63e6b53cc5ececd7ba86afbe65d8c2af9234817949e0863d35037b85ad8f58e7
|
File details
Details for the file ubox_py_sdk-0.1.44-py3-none-any.whl.
File metadata
- Download URL: ubox_py_sdk-0.1.44-py3-none-any.whl
- Upload date:
- Size: 120.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
22067a0f8ef37db05f4d27c65706c9f10e740b799ad6c19f9d7bfaba01ea56df
|
|
| MD5 |
135daa1aa9cdb1647098938c55585f79
|
|
| BLAKE2b-256 |
a243314801818bdcf5128e2b40af1ed47028335f10d6f9d9f65f7e4a45298abc
|