A Java client library for instrumenting, inspecting, debugging, and profiling Chromium-based browsers via the Chrome DevTools Protocol.
Chrome DevTools Java Client is a Java library that implements the Chrome DevTools Protocol, allowing Java applications to control and automate Chromium-based browsers. It solves the problem of programmatically instrumenting, inspecting, debugging, and profiling web browsers directly from Java code, enabling use cases like automated testing, performance monitoring, and web scraping.
Java developers and QA engineers who need to automate browser interactions for testing, monitoring, or data extraction without switching to JavaScript or Python-based tools.
Developers choose this library because it provides a pure Java, type-safe client for the Chrome DevTools Protocol with full protocol coverage, event-driven APIs, and headless browser support—eliminating the need for external automation frameworks.
Chrome DevTools java client.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Implements the entire Chrome DevTools Protocol with Java bindings for all domains like Network and Page, as evidenced by the protocol files sourced directly from the official devtools-protocol repo.
Enables subscription to real-time browser events such as network requests and page loading, demonstrated in the LogRequestsExample where onRequestWillBeSent is used for logging.
Allows launching Chrome in headless mode for automated testing and scraping, as shown in the launcher.launch(false) parameter for regular mode and implied headless capability.
Provides extensible configuration to adjust WebSocket buffer sizes, specifically addressing API hangs for large data transfers like PDFs, as detailed in the known-issues section.
Tested only on specific Chrome versions (e.g., v4.0.0 on Chrome 90), which may not align with latest releases, requiring manual protocol updates and risking compatibility issues.
Updating to new protocol versions involves running make commands to download and generate Java files, adding maintenance complexity and potential for errors in synchronization.
Initial versions had 4MB WebSocket buffers causing hangs for large data; while fixable, it requires explicit configuration, indicating out-of-the-box pitfalls for heavy usage.