Trio CDP
This Python library performs remote control of any web browser that implements
the Chrome DevTools Protocol. It is built using the type wrappers in
python-chrome-devtools-protocol and implements
I/O using Trio. This library handles the
WebSocket negotiation and session management, allowing you to transparently
multiplex commands, responses, and events over a single connection.
The example below demonstrates the salient features of the library by navigating to a
web page and extracting the document title.
from trio_cdp import open_cdp, page, dom
async with open_cdp(cdp_url) as conn:
targets = await target.get_targets()
target_id = targets[0].id
async with conn.open_session(target_id) as session:
async with session.page_enable()
async with session.wait_for(page.LoadEventFired):
await session.execute(page.navigate(target_url))
root_node = await session.execute(dom.get_document())
title_node_id = await session.execute(dom.query_selector(root_node.node_id,
'title'))
html = await session.execute(dom.get_outer_html(title_node_id))
print(html)
This example code is explained in the documentation
and more example code can be found in the examples/
directory of this repository.