Name | cidipi JSON |
Version |
0.2.0
JSON |
| download |
home_page | None |
Summary | Low-level client for interacting with Chrome Devtools Protocol (CDP) for Python. |
upload_time | 2024-06-21 08:32:54 |
maintainer | None |
docs_url | None |
author | Aprila Hijriyan |
requires_python | <4.0,>=3.9 |
license | MIT |
keywords |
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# cidipi
Low-level client for interacting with Chrome Devtools Protocol (CDP) for Python.
> [!WARNING]
> This library is in alpha. Use it at your own risk.
## Installation
```bash
pip install cidipi
```
## Usage
```python
import asyncio
import logging
from typing import cast
from cidipi.client import Browser
from cidipi.models import EventResponse, Payload, Tab
from cidipi.protocols import commands, events
logging.basicConfig(
level=logging.DEBUG, format="[%(levelname)s] [%(name)s] %(message)s"
)
logging.getLogger("websockets.client").disabled = True
async def navigate(tab: Tab, *, url: str, wait_until: str):
async def wait_for(data: Payload, result: asyncio.Future):
if data.kind == "result":
return
cdp_event_klass = events.Page.lifecycleEvent
cdp_event_name = cdp_event_klass.get_method_name()
resp_data = cast(EventResponse, data.data)
if resp_data["method"] == cdp_event_name:
obj = cdp_event_klass(**resp_data["params"])
if obj.name == wait_until:
result.set_result(None)
return await tab.execute(
commands.Page.navigate(url=url), callback=wait_for, timeout=30
)
async def main():
async with Browser(headless=False, remote_port=0) as browser:
async def run(url: str):
async with browser.new_tab() as tab:
await tab.execute(commands.Page.enable())
await tab.execute(commands.Page.setLifecycleEventsEnabled(enabled=True))
await navigate(tab, url=url, wait_until="load")
await run("https://www.google.com")
if __name__ == "__main__":
asyncio.run(main())
```
See the [examples/](https://github.com/aprilahijriyan/cidipi/tree/main/examples) directory to get started.
Raw data
{
"_id": null,
"home_page": null,
"name": "cidipi",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.9",
"maintainer_email": null,
"keywords": null,
"author": "Aprila Hijriyan",
"author_email": "hijriyan23@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/17/36/41dd2a15c65e464c63bddb34df89f01f7ea0d10de9da5010f66441ae11c8/cidipi-0.2.0.tar.gz",
"platform": null,
"description": "# cidipi\n\nLow-level client for interacting with Chrome Devtools Protocol (CDP) for Python.\n\n> [!WARNING]\n> This library is in alpha. Use it at your own risk.\n\n## Installation\n\n```bash\npip install cidipi\n```\n\n## Usage\n\n```python\nimport asyncio\nimport logging\nfrom typing import cast\n\nfrom cidipi.client import Browser\nfrom cidipi.models import EventResponse, Payload, Tab\nfrom cidipi.protocols import commands, events\n\nlogging.basicConfig(\n level=logging.DEBUG, format=\"[%(levelname)s] [%(name)s] %(message)s\"\n)\nlogging.getLogger(\"websockets.client\").disabled = True\n\n\nasync def navigate(tab: Tab, *, url: str, wait_until: str):\n async def wait_for(data: Payload, result: asyncio.Future):\n if data.kind == \"result\":\n return\n\n cdp_event_klass = events.Page.lifecycleEvent\n cdp_event_name = cdp_event_klass.get_method_name()\n resp_data = cast(EventResponse, data.data)\n if resp_data[\"method\"] == cdp_event_name:\n obj = cdp_event_klass(**resp_data[\"params\"])\n if obj.name == wait_until:\n result.set_result(None)\n\n return await tab.execute(\n commands.Page.navigate(url=url), callback=wait_for, timeout=30\n )\n\n\nasync def main():\n async with Browser(headless=False, remote_port=0) as browser:\n\n async def run(url: str):\n async with browser.new_tab() as tab:\n await tab.execute(commands.Page.enable())\n await tab.execute(commands.Page.setLifecycleEventsEnabled(enabled=True))\n await navigate(tab, url=url, wait_until=\"load\")\n\n await run(\"https://www.google.com\")\n\n\nif __name__ == \"__main__\":\n asyncio.run(main())\n```\n\nSee the [examples/](https://github.com/aprilahijriyan/cidipi/tree/main/examples) directory to get started.\n\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Low-level client for interacting with Chrome Devtools Protocol (CDP) for Python.",
"version": "0.2.0",
"project_urls": null,
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "e1ffdda08aedfcb5eab11bfe3f2cbbae78e200bdb1e9f0f46a30a70ff4e3d9a9",
"md5": "24de767c07893adbf2f79041c8169ddb",
"sha256": "723d3c77c6626412f17b7a1921d5466e5f937e42d65ebc74f978316ee11f1a4e"
},
"downloads": -1,
"filename": "cidipi-0.2.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "24de767c07893adbf2f79041c8169ddb",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.9",
"size": 135668,
"upload_time": "2024-06-21T08:32:52",
"upload_time_iso_8601": "2024-06-21T08:32:52.863251Z",
"url": "https://files.pythonhosted.org/packages/e1/ff/dda08aedfcb5eab11bfe3f2cbbae78e200bdb1e9f0f46a30a70ff4e3d9a9/cidipi-0.2.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "173641dd2a15c65e464c63bddb34df89f01f7ea0d10de9da5010f66441ae11c8",
"md5": "18667b88214100ddc080064c447279be",
"sha256": "98ed956783517531b3c6ca768b1d4d245e2834e44c00447a526f9bcdc3a7d41e"
},
"downloads": -1,
"filename": "cidipi-0.2.0.tar.gz",
"has_sig": false,
"md5_digest": "18667b88214100ddc080064c447279be",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.9",
"size": 132582,
"upload_time": "2024-06-21T08:32:54",
"upload_time_iso_8601": "2024-06-21T08:32:54.908103Z",
"url": "https://files.pythonhosted.org/packages/17/36/41dd2a15c65e464c63bddb34df89f01f7ea0d10de9da5010f66441ae11c8/cidipi-0.2.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-06-21 08:32:54",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "cidipi"
}