Python client for UI Bridge Framework
Project description
UI Bridge Python Client
Python client library for controlling UI elements via the UI Bridge HTTP API.
Installation
pip install ui-bridge-python
Quick Start
from ui_bridge import UIBridgeClient
# Connect to the UI Bridge server
client = UIBridgeClient("http://localhost:9876")
# Click a button
client.click("submit-btn")
# Type into an input
client.type("email-input", "user@example.com")
# Select from a dropdown
client.select("country-select", "US")
# Execute a component action
client.component("login-form").action("submit", {
"email": "user@example.com",
"password": "secret"
})
# Run a workflow
result = client.workflow("login-flow").run({
"email": "user@example.com",
"password": "secret"
})
Features
- Element Control: Click, type, select, scroll, and more
- Component Actions: Execute high-level component actions
- Workflows: Run multi-step automation workflows
- Discovery: Find controllable elements in the UI
- Render Logging: Capture and analyze DOM snapshots
- Debug Tools: Access action history and performance metrics
Element Actions
# Click actions
client.click("btn")
client.double_click("btn")
client.right_click("btn")
# Input actions
client.type("input", "text")
client.type("input", "text", clear=True) # Clear first
client.clear("input")
# Selection
client.select("dropdown", "value")
client.select("dropdown", ["val1", "val2"]) # Multi-select
client.select("dropdown", "Option Text", by_label=True)
# Checkbox/radio
client.check("checkbox")
client.uncheck("checkbox")
client.toggle("checkbox")
# Focus
client.focus("input")
client.blur("input")
# Scroll
client.scroll("container", direction="down", amount=100)
client.scroll("container", to_element="#target")
Component Actions
Components expose high-level actions that can orchestrate multiple element interactions:
# Get component control
login_form = client.component("login-form")
# Execute action
result = login_form.action("submit", {
"email": "user@example.com",
"password": "secret"
})
# Alternative syntax
result = login_form("submit", params)
Workflows
Workflows are pre-defined multi-step automations:
# Run a workflow
result = client.workflow("checkout").run({
"product_id": "123",
"quantity": 2
})
# Check status
print(result.status) # completed, failed, etc.
print(result.steps) # Individual step results
Discovery
Find controllable elements in the UI:
# Discover all interactive elements
response = client.discover(interactive_only=True)
for element in response.elements:
print(f"{element.id}: {element.type} - {element.actions}")
# Filter by type
response = client.discover(types=["button", "input"])
# Get full snapshot
snapshot = client.get_snapshot()
Render Logging
Capture and analyze DOM state:
# Capture snapshot
client.render_log.snapshot()
# Get entries
entries = client.render_log.get(limit=10)
# Filter by type
entries = client.render_log.get(entry_type="snapshot")
# Clear log
client.render_log.clear()
Debug Tools
# Get action history
history = client.get_action_history(limit=50)
# Get performance metrics
metrics = client.get_metrics()
print(f"Success rate: {metrics.success_rate * 100}%")
print(f"Average duration: {metrics.avg_duration_ms}ms")
# Highlight an element (visual debugging)
client.highlight_element("submit-btn")
Wait Options
Most actions support wait options:
client.click("btn",
wait_visible=True, # Wait for element to be visible
wait_enabled=True, # Wait for element to be enabled
timeout=10000 # Timeout in milliseconds
)
Error Handling
from ui_bridge import UIBridgeClient, ElementNotFoundError, ActionFailedError
client = UIBridgeClient()
try:
client.click("non-existent-btn")
except ElementNotFoundError:
print("Element not found")
except ActionFailedError as e:
print(f"Action failed: {e}")
Context Manager
with UIBridgeClient("http://localhost:9876") as client:
client.click("btn")
# Client is automatically closed
Async Support
For async applications, use httpx's async client:
import httpx
from ui_bridge.types import ActionResponse
async def main():
async with httpx.AsyncClient() as http_client:
response = await http_client.post(
"http://localhost:9876/ui-bridge/control/element/btn/action",
json={"action": "click"}
)
result = ActionResponse.model_validate(response.json()["data"])
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 ui_bridge_python-0.1.1.tar.gz.
File metadata
- Download URL: ui_bridge_python-0.1.1.tar.gz
- Upload date:
- Size: 14.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7b34084617dfb3b175b9f9edb8c1976c8b8251101c6aa5ba1ea202d21e980521
|
|
| MD5 |
da80530ed4b740487f6738f0ff8cf0e9
|
|
| BLAKE2b-256 |
8a62d62c16545727fc04fcd5ae0df217cc96bb3ae91c5622f41327665eef3959
|
File details
Details for the file ui_bridge_python-0.1.1-py3-none-any.whl.
File metadata
- Download URL: ui_bridge_python-0.1.1-py3-none-any.whl
- Upload date:
- Size: 11.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b7d1a0a3ded86585784bcb171210835cd2796285ae5fe7a34af6916cdc892815
|
|
| MD5 |
7cd3d69322c11f988f82e2156acff79d
|
|
| BLAKE2b-256 |
01fadcb69ec6c33a0b176e3111387556377c8b9e8ac99dbe4474a43dc331193c
|