Devicebase Python SDK
Project description
Devicebase Python SDK
Python SDK for the Devicebase device automation API. Control Android/HarmonyOS/iOS devices programmatically via HTTP and WebSocket interfaces.
Installation
pip install devicebase
Quick Start
from devicebase import DeviceBaseClient
# Initialize client (reads DEVICEBASE_BASE_URL and DEVICEBASE_API_KEY from env)
client = DeviceBaseClient()
# Get device info
info = client.get_device_info("device123")
# Control the device
client.tap("device123", x=100, y=200)
client.swipe("device123", x1=0, y1=500, x2=500, y2=500)
client.launch_app("device123", "com.example.app")
# Take a screenshot
screenshot_bytes = client.get_screenshot("device123")
with open("screenshot.jpg", "wb") as f:
f.write(screenshot_bytes)
Configuration
Configure via environment variables or constructor parameters:
import os
# Option 1: Environment variables (optional, has default values)
os.environ["DEVICEBASE_API_KEY"] = "your-api-key"
# DEVICEBASE_BASE_URL defaults to https://api.devicebase.cn if not set
client = DeviceBaseClient()
# Option 2: Constructor parameters
client = DeviceBaseClient(
base_url="https://api.devicebase.cn",
api_key="your-api-key"
)
Both HTTP and HTTPS protocols are supported.
Device Control
Touch Operations
# Single tap
client.tap("device123", x=100, y=200)
# Double tap
client.double_tap("device123", x=100, y=200)
# Long press
client.long_press("device123", x=100, y=200)
# Swipe
client.swipe("device123", x1=0, y1=500, x2=500, y2=500)
Navigation
# Press back button
client.back("device123")
# Press home button
client.home("device123")
App Operations
# Launch an app
client.launch_app("device123", "微信")
# Get current foreground app
app_info = client.get_current_app("device123")
print(app_info.data["package"])
Text Input
# Input text into focused field
client.input_text("device123", "Hello World")
# Clear text in focused field
client.clear_text("device123")
UI Hierarchy
# Dump UI hierarchy (useful for automation)
hierarchy = client.dump_hierarchy("device123")
print(hierarchy.data)
Screenshots
# Get screenshot as JPEG bytes
screenshot = client.get_screenshot("device123")
# Download screenshot as file attachment
download = client.download_screenshot("device123")
WebSocket Streaming
Screen Streaming (Minicap)
import asyncio
async def stream_screen():
client = DeviceBaseClient()
minicap = client.minicap_client("device123")
async for frame in minicap.stream_frames():
# frame is JPEG bytes
with open("frame.jpg", "wb") as f:
f.write(frame)
asyncio.run(stream_screen())
Touch Control (Minitouch)
import asyncio
async def control_touch():
client = DeviceBaseClient()
minitouch = client.minitouch_client("device123")
async with minitouch:
# Tap at coordinates
await minitouch.tap(100, 200)
# Swipe gesture
await minitouch.swipe(0, 500, 500, 500, duration_ms=300)
asyncio.run(control_touch())
Error Handling
from devicebase import (
DeviceBaseClient,
AuthenticationError,
DeviceNotFoundError,
ValidationError,
)
try:
client = DeviceBaseClient()
info = client.get_device_info("device123")
except AuthenticationError:
print("Invalid or missing API key")
except DeviceNotFoundError:
print("Device not found or not connected")
except ValidationError as e:
print(f"Invalid request: {e}")
Examples
More complete examples can be found in the examples/ directory.
- device_control.py — Device info, touch, navigation, text input
- screenshot_hierarchy.py — Screenshots and UI hierarchy
- websocket_minicap.py — Real-time screen streaming
- websocket_minitouch.py — Low-level touch control
- async_stream.py — Async streaming with processing
License
MIT
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
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
File details
Details for the file devicebase-2026.4.3.tar.gz.
File metadata
- Download URL: devicebase-2026.4.3.tar.gz
- Upload date:
- Size: 17.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3248924823049e37a27a9c120ed0fffe7e78e5dabfd7eb3afc825a4433dbcdfc
|
|
| MD5 |
be84a71597e0bc0e30ad109a7115d8c5
|
|
| BLAKE2b-256 |
28143af0a9426e4c02855bdac6641fd7c0855796e554eb06cfcf90deb6a9aa4c
|
File details
Details for the file devicebase-2026.4.3-py3-none-any.whl.
File metadata
- Download URL: devicebase-2026.4.3-py3-none-any.whl
- Upload date:
- Size: 13.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
32a5421d720971dca141e3e3c52965657fd74eed717756f4058b5c80c4b27823
|
|
| MD5 |
60010162db864ef2779722f091a13a62
|
|
| BLAKE2b-256 |
ea8ae618f1295aab8b4141d39aced9a50436dafc23d84fca6dc6f1a24d4531c7
|