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 details)

Uploaded Source

File details

Details for the file ChromeDevTools-0.2.2.tar.gz.

File metadata

  • Download URL: ChromeDevTools-0.2.2.tar.gz
  • Upload date:
  • Size: 5.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.3

File hashes

Hashes for ChromeDevTools-0.2.2.tar.gz
Algorithm Hash digest
SHA256 c1af8d1201d5e0a395d5293d924a25ef4f9f51d0683a5190fa13c0b454ce6568
MD5 65bc3f8c1691b355a4b139915d51066e
BLAKE2b-256 4f9ec61c5f3a4a383d2c14ca49f9b9bd37e6d8d62c8f9c7ce289a13fcc35b11c

See more details on using hashes here.

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