Skip to main content

Async Chrome DevTools

Project description

Description: ## Description

Asynchronous Python library for Chrome DevTools.

## Install

```bash
pip install git+git://github.com/codedumps/async-chrome-dev-tools.git
```

## Chrome Debugging Mode

Launch Chrome instance with argument `--remote-debugging-port`:

```bash
$ google-chrome-stable --remote-debugging-port=9222
```

Instead of Chrome you can use Chronium.

## Usage

```python
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` будет выглядеть так:

```python
response = await rpc.page.capture_screenshot(format='png', quality=100)
print(response.result.data)
```

Общий вид вызова метода:

```python
rpc.domain.method(params_dict, param1=value1, param2=value2, ...)
```

Первая буква имени домена переводится в верхний регистр, имя метода из under_score транслируется в camelCase.

Не все методы API предполагают возвращение ответа. К имени таких методов нужно добавлять окончание `_nowait`. Пример для `Network.enable`:

```python
await rpc.network.enable_nowait()
async for event in rpc:
# Обрабатываем события
```

## Tests

```bash
pytest tests -s
```

## Links

* [Chrome DevTools](https://developers.google.com/web/tools/chrome-devtools/) – общая ифнормация;
* [Chrome DevTools Protocol](https://chromedevtools.github.io/devtools-protocol/) – список методов, доступных для вызова через jsonrpc

Keywords: async chrome devtools
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Framework :: AsyncIO
Classifier: Topic :: Software Development :: Debuggers
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.7
Description-Content-Type: text/markdown

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

ChromeDevTools-0.2.2.tar.gz (5.6 kB view hashes)

Uploaded Source

Supported by

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