Skip to main content

Chrome DevTools Protocol for Python — direct CDP over WebSocket, no Selenium, no Playwright

Project description

cdpwave

CI Tests Docs Release PyPI Python License: MIT

Chrome DevTools Protocol for Python — direct, typed, async.

cdpwave talks to Chrome over a raw WebSocket. No Node.js, no ChromeDriver, no browser downloads. Just pure Python with full type hints and async-first design.

Why cdpwave?

  • Full CDP coverage — all 60 CDP domains implemented with 685 typed methods
  • Direct WebSocket — single connection to Chrome's DevTools Protocol, no intermediate layers
  • Fully typedmypy --strict across the entire codebase, IDE autocomplete everywhere
  • Async-first — built on asyncio, no threading, no blocking calls
  • Browser detection — finds Chrome, Edge, Brave, or Chromium already on your system
  • Flatten sessions — one WebSocket for all tabs via Target.attachToTarget + sessionId
  • Escape hatchsession.send("Any.CDPMethod", params) for any uncovered command
  • HTTP discovery — typed access to /json/version and /json/list endpoints
  • WebSocket keepalive — automatic ping/pong with configurable interval and timeout
  • Direct WebSocket URLCDPClient.connect(ws_url=...) bypasses HTTP discovery
  • Event helperssession.wait_for_event() and session.on() for async event handling
  • Multi-tab sessionsclient.sessions property tracks all active sessions
  • Integration tested — 322 integration tests against a real Chromium browser covering all domains

Install

pip install cdpwave

Quick start

import asyncio
from cdpwave import CDPClient

async def main() -> None:
    async with await CDPClient.launch(headless=True) as client:
        session = await client.new_page("https://example.com")
        result = await session.runtime.evaluate("document.title", return_by_value=True)
        print(result["result"]["value"])  # "Example Domain"
        await session.close()

asyncio.run(main())

Documentation

Full documentation at mathiaspaulenko.github.io/cdpwave.

Contributing

Contributions are welcome! See CONTRIBUTING.md for guidelines on development setup, code style, testing, and pull request process.

Please read our Code of Conduct before participating.

Security

Found a vulnerability? See SECURITY.md for responsible disclosure.

License

MIT

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

cdpwave-2.6.0.tar.gz (224.2 kB view details)

Uploaded Source

Built Distribution

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

cdpwave-2.6.0-py3-none-any.whl (120.3 kB view details)

Uploaded Python 3

File details

Details for the file cdpwave-2.6.0.tar.gz.

File metadata

  • Download URL: cdpwave-2.6.0.tar.gz
  • Upload date:
  • Size: 224.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for cdpwave-2.6.0.tar.gz
Algorithm Hash digest
SHA256 72b5f6a5931fe65602acfdd44c8c6aa107e73bc726b54b31f3bcd9036349e383
MD5 40bebfec4b93f0d6752a6ea718e1bce9
BLAKE2b-256 88e4a1fd06013f0aada525c80f51a8bab8af1d6f5908f86715ca802954340534

See more details on using hashes here.

Provenance

The following attestation bundles were made for cdpwave-2.6.0.tar.gz:

Publisher: release.yml on MathiasPaulenko/cdpwave

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cdpwave-2.6.0-py3-none-any.whl.

File metadata

  • Download URL: cdpwave-2.6.0-py3-none-any.whl
  • Upload date:
  • Size: 120.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for cdpwave-2.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 233e83aee6a580c55f9a54a20a8e95e151c18db2b32d4c53fbf89334a585308f
MD5 1c75194a0e65981365eef117bbaed18a
BLAKE2b-256 75b20d1c89150b6a1e4d2af3dc648b27e76ad24a849b94e5572a92face584977

See more details on using hashes here.

Provenance

The following attestation bundles were made for cdpwave-2.6.0-py3-none-any.whl:

Publisher: release.yml on MathiasPaulenko/cdpwave

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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