Skip to main content

Chrome DevTools with accessibility-tree semantics

Project description

Quay — Chrome DevTools with Accessibility Semantics

PyPI version Python 3.10+ Apache-2.0

Quay combines Chrome DevTools Protocol with accessibility-tree semantics for browser automation using your authenticated Chrome sessions.

Why Quay?

Feature Quay Playwright agent-browser Raw CDP
Accessibility tree
Uses your logged-in Chrome
Connection pooling
Auto-reconnect
Python-native
Session recording
Weight ~20KB ~MB ~MB ~5MB

Installation

pip install quay

Or from source:

git clone https://github.com/sidonsoft/quay
cd quay
pip install -e .

Prerequisites

Chrome must be running with remote debugging enabled:

# macOS
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222

# Linux
google-chrome --remote-debugging-port=9222

# Windows
"C:\Program Files\Google\Chrome\Application\chrome.exe" --remote-debugging-port=9222

Or use the included launcher:

./scripts/chrome-debug.sh

Quick Start

Python API

from quay import Browser

browser = Browser()
browser.goto("https://gmail.com")  # Uses your logged-in session

tree = browser.accessibility_tree()
print(tree.to_tree_str())

browser.click_by_text("Sign in")
browser.fill_form({"Email": "user@example.com"})

CLI

# List tabs
quay list

# Open new tab
quay new https://example.com

# Get accessibility tree
quay snapshot

# Take screenshot
quay screenshot

# Click by text
quay click "Submit"

Features

Feature Description
Accessibility Tree Navigate pages using AX nodes like agent-browser
Session Reuse Uses your existing Chrome session (no separate browser)
Connection Pooling WebSocket reuse across operations for speed
Auto-Reconnect Automatically reconnects on connection drop
Session Recording Record and replay browser actions
Form Filling Fill forms by label text
Click by Text Click elements matching visible text
JavaScript Eval Run arbitrary JavaScript

Automatic Reconnection

Quay automatically detects dropped connections and reconnects:

browser = Browser(reconnect=True, reconnect_max_retries=3)

# If connection drops during operation,
# Quay will attempt to reconnect automatically
tree = browser.accessibility_tree()  # May auto-reconnect if needed

Monitor reconnection with a callback:

def on_reconnect(msg):
    print(f"Reconnecting: {msg}")

browser = Browser(reconnect_callback=on_reconnect)

License

Apache-2.0 - See LICENSE for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

quay-0.1.0.tar.gz (44.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

quay-0.1.0-py3-none-any.whl (46.2 kB view details)

Uploaded Python 3

File details

Details for the file quay-0.1.0.tar.gz.

File metadata

  • Download URL: quay-0.1.0.tar.gz
  • Upload date:
  • Size: 44.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.6

File hashes

Hashes for quay-0.1.0.tar.gz
Algorithm Hash digest
SHA256 326cefc68a081a1922a4d347513d142e914e042c79254af193ec43daf424c47d
MD5 b255872c8989b12d895f8175eb604a6e
BLAKE2b-256 33db1885742e823fd0018cadbf672099fb36ecd284d96633cbc78f80303e2848

See more details on using hashes here.

File details

Details for the file quay-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: quay-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 46.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.6

File hashes

Hashes for quay-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c638642555d3b90fcaa5eb4835c59df9074b14f8af64e780d435f1b0f31a2371
MD5 5c9540674b5258150a05b1106ffdd000
BLAKE2b-256 ac3de09d587996b78fa94fb3d6fb5287b0b40c99131e0b672d40bd2035af0ecd

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page