https://github.com/hubspot/chromedevtoolsclient
A java websocket client for the Chrome DevTools Protocol
https://github.com/hubspot/chromedevtoolsclient
Last synced: 9 months ago
JSON representation
A java websocket client for the Chrome DevTools Protocol
- Host: GitHub
- URL: https://github.com/hubspot/chromedevtoolsclient
- Owner: HubSpot
- License: apache-2.0
- Created: 2018-06-11T14:36:54.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2025-08-01T19:49:37.000Z (11 months ago)
- Last Synced: 2025-08-01T20:52:04.721Z (11 months ago)
- Language: Java
- Size: 1.38 MB
- Stars: 41
- Watchers: 17
- Forks: 16
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# ChromeDevToolsClient
A java websocket client for the [Chrome DevTools Protocol](https://chromedevtools.github.io/debugger-protocol-viewer/tot/). Latest release built against protocol version `1.3` (will generally track the latest stable version of the protocol)
## Including Via Maven
```xml
com.hubspot.chrome
ChromeDevToolsClient
1.0
```
## Usage
Run Chrome with remote debugging enabled in headless mode
```bash
google-chrome --headless --disable-gpu --remote-debugging-port=9292
```
Connect to Chrome using the `ChromeDevToolsClient` class. The `ChromeDevToolsClient` can create multiple connections to separate instances of Chrome. Each connection results in a separate `ChromeDevToolsSession`.
```java
// Create a client
ChromeDevToolsClient client = ChromeDevToolsClient.defaultClient();
// Connect to Chrome Dev Tools Running on port 9292 on your local machine
try (ChromeDevToolsSession session = client.connect("127.0.0.1", 9292)) {
// Control Chrome remotely
session.navigate("https://www.hubspot.com/");
}
// Close the client when your finished
client.close();
```
The `ChromeDevToolsSession` class provides all methods for interacting with Chrome. There are synchronous and asynchronous versions available for each method.
You can also check out our [examples](TODO) for more.
## Configuring ChromeDevToolsClient
You can construct your dev tools client with the following options:
```java
ChromeDevToolsClient client = new ChromeDevToolsClient.Builder()
/*
* An instance of com.hubspot.horizon.HttpClient. The HttpClient is used to hit the devtools /json/list endpoint to grab the first available target id to control
* Default: the default com.hubspot.horizon.ning.NingHttpClient
*/
.setHttpClient()
/*
* The timeout for getting a valid response from the /json/list endpoint via http. If no valid response is received in this time a ChromeDevToolsException is thrown
* Default: 5 seconds
*/
.setSessionConnectTimeoutMillis()
/*
* A global timeout for any action performed in the client. If the client does not receive a response for an action taken in this amount of time
* a ChromeDevToolsException is thrown
* Default: 60 seconds
*/
.setActionTimeoutMillis()
/*
* An instnace of java.util.concurrent.ExecutorService which provides the thread pool for event listeners and any async actions performed in the client
* Default: A ThreadPoolExecutor with a max pool size of 10 threads
*/
.setExecutorService()
/*
* An instance of com.fasterxml.jackson.databind.ObjectMapper responsible for (de)serializing the json sent to and received from Chrome.
* The default ObjectMapper for the client is configured with a custom deserializer for Chrome events. You will generally not need to update this
*/
.setObjectMapper()
.build();
```