Chromote
Simple wrapper to drive Google Chrome from Python
Install / Use
/learn @iiSeymour/ChromoteREADME
Chromote
Simple wrapper to drive Google Chrome from Python using the Remote Debugging Protocol 1.2 API
Installation
$ pip install chromote
API
>>> from chromote import Chromote
>>> chrome = Chromote()
>>> chrome
Chromote(host="localhost", port=9222)
>>> print chrome
[Chromote(tabs=1)]
>>> tab = chrome.tabs[0]
>>> print tab
Google - https://www.google.co.uk/
>>> print tab.url
https://www.google.co.uk/
>>> tab.reload()
'{"result":{},"id":1}'
>>> tab.set_url('https://github.com/chromote')
'{"id":2,"result":{}}'
>>> tab.set_zoom(1.2)
'{"id":1,"result":{"result":{"type":"number","value":1.2,"description":"1.2"},"wasThrown":false}}'
>>> tab.evaluate('alert("Remotey");')
Note: Google Chrome needs starting with the --remote-debugging-port=<PORT> option to be controlled remotely.
Remote Browser Control
The remote debugging port binds to localhost only so using chromote with a remote machine like a dashboard/kiosk setup will require tunneling to the machine first.
On the remote machine start Google Chrome:
$ chromium-browser <URL> --incognito --kiosk --remote-debugging-port=9222
On the local machine set up a tunnel to map the remote debugging port to 9222 on localhost:
$ ssh remote-machine -L 9222:localhost:9222
You can then drive your dashboard/kiosk machine remotely to display the content you want.
from time import sleep
from chromote import Chromote
chrome = Chromote()
tab = chrome.tabs[0]
sites = [
'https://github.com',
'http://stackoverflow.com',
]
while True:
for site in sites:
tab.set_url(site)
sleep(30)
License
MIT Copyright (c) 2016 Chris Seymour
Related Skills
node-connect
339.3kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
claude-opus-4-5-migration
83.9kMigrate prompts and code from Claude Sonnet 4.0, Sonnet 4.5, or Opus 4.1 to Opus 4.5
frontend-design
83.9kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
model-usage
339.3kUse CodexBar CLI local cost usage to summarize per-model usage for Codex or Claude, including the current (most recent) model or a full model breakdown. Trigger when asked for model-level usage/cost data from codexbar, or when you need a scriptable per-model summary from codexbar cost JSON.
