Skip to main content

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

Project description

cdpwave

CI Tests 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 48 CDP domains implemented with 386 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
  • MIT licensed — permissive, compatible with any use

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.

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.0.0.tar.gz (117.3 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.0.0-py3-none-any.whl (82.1 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for cdpwave-2.0.0.tar.gz
Algorithm Hash digest
SHA256 068938719f2ec7c4b0df9edee3a283a10f92d970f110c7327020e4d7daadcdda
MD5 e5ecf13abac56a6d38bb4c98fee40877
BLAKE2b-256 96c9c9fb36622a405708f8639482eaa71da55bd06347179b25e13ffe4d81328e

See more details on using hashes here.

Provenance

The following attestation bundles were made for cdpwave-2.0.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.0.0-py3-none-any.whl.

File metadata

  • Download URL: cdpwave-2.0.0-py3-none-any.whl
  • Upload date:
  • Size: 82.1 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.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b021368912117dd20905eb6b6bf061abf6d5514aca4d44d782352f7b0d890178
MD5 5eb9cfb3a1e7f8fd89ffd970586c91fa
BLAKE2b-256 94eda6ecbaae7c13d582c0d1943a227e556f615791d405a5ce3ab0fc8a531420

See more details on using hashes here.

Provenance

The following attestation bundles were made for cdpwave-2.0.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