pyquality 🎈
A kid-friendly, yet exceptionally powerful automation framework for Python driven directly by the Chrome DevTools Protocol (CDP).
pyquality is designed to be as simple as possible. Want to close the browser? Just call b.bye(). Want to navigate? b.go_to("https://...")
Under the hood, it retains uncompromising power. Advanced users have unfiltered access to all 40+ raw Chromium DevTools domains (DOM, Network, Page, etc.) auto-generated from the official Google spec!
🚀 Installation (Source)
If you are developing locally:
git clone https://github.com/santoshtvk-new/Pyquality.git
cd pyquality
pip install -e .
🛠️ Installation (PIP)
(When published to PyPi)
pip install pyquality
📖 Quick Start
from pyquality.browser import Browser
# 1. Start it up
b = Browser(headless=False)
# 2. Go somewhere
b.go_to("https://example.com")
# 3. Validation is easy
b.should_be_seen("h1")
# 4. Say goodbye
b.bye()
✨ The Kid-Friendly Aliases
pyquality dynamically binds methods defined in METHOD_ALIASES.yml so you can use vocabulary that makes sense to you.
Navigation
navigate(url)->go_to,open_websitereload()->refresh,reload_pageclose()->close_browser,byego_back()->step_back,previous_pagego_forward()->step_forward,next_page
Interaction
click_element(selector)->click_this,taptype_text(selector, text)->type_in,write_thishover_element(selector)->point_at,hover_over
APIs & Data
API.get(endpoint)->fetch_data,grabAPI.post(endpoint, json)->create_data,send_new
⚡ Raw CDP Power (Advanced)
If you need capabilities beyond the simple wrappers, pyquality has raw auto-generated bindings for EVERY CDP Domain. They are attached natively to the browser instance:
from pyquality.browser import Browser
b = Browser()
# Use raw 'Page' domain to capture a PDF
b.page.printToPDF()
# Use raw 'Network' domain to throttle connection
b.network.emulateNetworkConditions(
offline=False,
latency=200,
downloadThroughput=1000,
uploadThroughput=1000
)
# Use raw 'DOM' domain to get node information
b.dom.getDocument(depth=-1)
📦 Deploying Initial PIP Package
To package this framework and upload it to PyPi:
-
Install build tools:
pip install build twine
-
Generate Native Wrappers: Ensure your CDP protocol bindings are up-to-date:
python src/pyquality/generate_cdp_wrappers.py -
Build wheels:
python -m build
This generates
.tar.gzand.whlfiles in the/distfolder. -
Upload to PyPi (Requires Account):
python -m twine upload dist/*
-
Done! Users can now run
pip install pyquality.
Metadata
Release files for py4quality 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| py4quality-0.1.0.tar.gz | 68.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| py4quality-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 155.5 kB
Release files / py4quality-0.1.0.tar.gz
| Download URL | py4quality-0.1.0.tar.gz |
|---|---|
| Size | 68.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
dec2f55d2280ae43389daeed6588c20657c99c0ac81670009fe2d66c1528713d
|
|
BLAKE2b-256 checksum How to use checksums |
80613296a33d49afde4dd124ff257ad6662a8403d89e7f94b10f801e2ad120da
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.2
|
Release files / py4quality-0.1.0-py3-none-any.whl
| Download URL | py4quality-0.1.0-py3-none-any.whl |
|---|---|
| Size | 86.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
aa8513a8d8a415ab4990ad593e5d57c1d666562d0e0ac0144bca6fbe565df984
|
|
BLAKE2b-256 checksum How to use checksums |
3186de27119fe3e05ee22238b351f4620042a3b891f6459f2648cc4a45f08c1d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.2
|