https://github.com/scivisum/browser-debugger-tools
A python client for the devtools protocol
https://github.com/scivisum/browser-debugger-tools
automation chromedriver devtools-protocol selenium
Last synced: 2 months ago
JSON representation
A python client for the devtools protocol
- Host: GitHub
- URL: https://github.com/scivisum/browser-debugger-tools
- Owner: scivisum
- License: other
- Created: 2019-06-24T16:21:19.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2025-04-07T09:44:26.000Z (12 months ago)
- Last Synced: 2026-01-04T04:30:21.755Z (3 months ago)
- Topics: automation, chromedriver, devtools-protocol, selenium
- Language: Python
- Size: 274 KB
- Stars: 17
- Watchers: 2
- Forks: 4
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# browser-debugger-tools
[](https://app.circleci.com/pipelines/github/scivisum/browser-debugger-tools?branch=master)
[](https://pypi.python.org/pypi/browserdebuggertools)


## Overview
The purpose is to provide a python client to connect to the debugger tools of a web-browser.
**Currently supports** connecting to **Google-Chrome/Chromium** over the devtools protocol, via a wrapped websockets client. **Feel free to extend and add support for other browsers** as required.
For improved performance, install the wsaccel python lib https://pypi.org/project/wsaccel/
## Example Usage
Start Google-Chrome, passing a remote debugger port argument, for example on Ubuntu:
```
$ google-chrome-stable --remote-debugging-port=9899
```
In a python console, you can connect to the remote debugging port and enable the Page domain.
```
>> devtools_client = ChromeInterface(9899, domains={"Page": {}})
```
The client provides some devtools interface methods, for example:
```
>> with devtools_client.set_timeout(10):
... devtools_client.take_screenshot("/tmp/screenshot.png")
```
Or more generally you can call remote methods according to the devtools protocol spec (https://chromedevtools.github.io/devtools-protocol/tot/Network), for example
```
>> devtools_client.execute(domain="Network", method="enable")
>> devtools_client.execute("Network", "setUserAgentOverride", {"userAgent": "Test"})
````
## Contributing
### Running Tests
The `test.sh` script makes running tests easier, it will create containers with the required
environment; and run a virtual display for the E2E tests.
It takes a single argument which is a pytest expression to run a subset of tests, for example:
```
./test.sh e2etests/chrome/test_interface.py::TestSwitchTabHeaded::test_switch_tab_headed
```