Async Chrome DevTools
Project description
Description
Asynchronous Python library for Chrome DevTools.
Install
pip install git+git://github.com/codedumps/async-chrome-dev-tools.git
Chrome Debugging Mode
Launch Chrome instance with argument --remote-debugging-port
:
$ google-chrome-stable --remote-debugging-port=9222
Instead of Chrome you can use Chronium.
Usage
import asyncio
from ChromeDevTools import ChromeDevTools
async def run():
chrome = ChromeDevTools()
tab = await chrome.new_tab('http://linux.org.ru')
rpc = await chrome.connect_tab(tab['webSocketDebuggerUrl'])
...
asyncio.get_event_loop().run_until_complete(run())
API
Инстанс Chrome принимает команды по http и через вебсокеты. По http мы можем управлять табами. Чтобы получить исходный код страницы, выполнить JavaScript на ней, перехватить запросы и т.д., нужно подключиться к табу через вебсокеты, а затем отправить команду через jsonrpc. Вызов jsonrpc-методов реализован с помощью обращения к несуществующим атрибутам объектов. Например, вызов метода Page.captureScreenshot
будет выглядеть так:
response = await rpc.page.capture_screenshot(format='png', quality=100)
print(response.result.data)
Общий вид вызова метода:
rpc.domain.method(params_dict, param1=value1, param2=value2, ...)
Первая буква имени домена переводится в верхний регистр, имя метода из under_score транслируется в camelCase.
Не все методы API предполагают возвращение ответа. К имени таких методов нужно добавлять окончание _nowait
. Пример для Network.enable
:
await rpc.network.enable_nowait()
async for event in rpc:
# Обрабатываем события
Tests
pytest tests -s
Links
- Chrome DevTools – общая ифнормация;
- Chrome DevTools Protocol – список методов, доступных для вызова через jsonrpc
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.