# Rod

> A high-level Go driver for the Chrome DevTools Protocol, built for web automation, scraping and end-to-end testing.

Rod is an open-source Go library for driving browsers through the Chrome DevTools Protocol. It is aimed at developers who need web automation and scraping, and it supports both high-level helpers and low-level protocol access. The project is MIT licensed and its latest listed release is v0.116.2.

## What It Is

Rod is a high-level driver based directly on the DevTools Protocol. According to its documentation, it can automate most things that can be done manually in a browser: capturing page screenshots, scraping client-side rendered pages, auto-filling forms, running end-to-end tests, and hijacking requests. Developers can use the low-level packages to customize or build their own version of Rod, while the high-level functions serve as a default build.

## Automation Workflow and Design

The README describes a chained context design that makes it intuitive to time out or cancel long-running tasks. Elements are auto-waited until they are ready. Helpers such as WaitStable, WaitRequestIdle, HijackRequests and WaitDownload cover common page-state needs. A two-step WaitEvent design is meant to ensure events are not missed. Nested iframes and shadow DOMs are handled, and all operations are thread-safe.

## Browser Management and Debugging

Rod can automatically find or download a browser. It documents input tracing and remote monitoring of a headless browser for debugging, and states that no zombie browser processes remain after a crash. The documentation site covers custom browser launch, selectors, events, input, emulation, network, page resources, JavaScript runtime, custom WebSocket and end-to-end testing guides.

## Learning Resources

The docs include a Get Started guide, FAQ, API reference, examples, and a comparison of examples between Rod and Chromedp. The documentation is available in several languages, and community help is offered through a Discord chat room and GitHub issues and discussions.

## Features
- Chained context design for timeouts and cancellation
- Auto-wait for elements to be ready
- Debugging-friendly input tracing and remote monitoring of headless browsers
- Thread-safe operations
- Automatic browser discovery or download
- High-level helpers like WaitStable, WaitRequestIdle, HijackRequests, WaitDownload
- Two-step WaitEvent design
- Handles nested iframes and shadow DOMs
- No zombie browser processes after a crash
- Page screenshots, form auto-fill and request hijacking
- End-to-end testing support

## Integrations
Chrome DevTools Protocol

## Platforms
API, DEVELOPER_SDK

## Pricing
Open Source

## Version
v0.116.2

## Links
- Website: https://go-rod.github.io
- Documentation: https://go-rod.github.io/#/get-started/README
- Repository: https://github.com/go-rod/rod
- EveryDev.ai: https://www.everydev.ai/tools/rod
