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!
If you are developing locally:
git clone https://github.com/santoshtvk-new/Pyquality.git
cd pyquality
pip install -e .(When published to PyPi)
pip install py4qualityfrom 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()pyquality dynamically binds methods defined in METHOD_ALIASES.yml so you can use vocabulary that makes sense to you.
navigate(url)->go_to,open_websitereload()->refresh,reload_pageclose()->close_browser,byego_back()->step_back,previous_pagego_forward()->step_forward,next_page
click_element(selector)->click_this,taptype_text(selector, text)->type_in,write_thishover_element(selector)->point_at,hover_over
API.get(endpoint)->fetch_data,grabAPI.post(endpoint, json)->create_data,send_new
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)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.