DevTools protocol
For every running session WebSummoner proxies the Chrome DevTools protocol to the browser container. Point any CDP client at:
<ws-or-http>://websummoner.example.com:4444/devtools/<session-id>/<method>Supported methods
Section titled “Supported methods”| Method | Protocol | Meaning |
|---|---|---|
/browser | WebSocket | Browser-level DevTools websocket |
/ | WebSocket | Alias for /browser |
/page | WebSocket | Current page (target) websocket — ideal when a single tab is open |
/page/<target-id> | WebSocket | Websocket for a specific tab |
/json/protocol | HTTP | Supported protocol methods as JSON (used by some client libraries) |
For example, the current-page websocket is:
ws://websummoner.example.com:4444/devtools/<session-id>/pageExample: Puppeteer over a WebdriverIO session
Section titled “Example: Puppeteer over a WebdriverIO session”Because the Selenium session and the CDP connection share the same browser, you can mix high-level Selenium actions with Puppeteer’s low-level access:
const { remote } = require('webdriverio');const puppeteer = require('puppeteer-core');const host = 'websummoner.example.com';
(async () => { const browser = await remote({ hostname: host, capabilities: { browserName: 'chrome', browserVersion: '152.0', }, });
const devtools = await puppeteer.connect({ browserWSEndpoint: `ws://${host}:4444/devtools/${browser.sessionId}`, });
const page = await devtools.newPage(); await page.goto('https://example.com'); await page.screenshot({ path: 'screenshot.png' }); console.log(await page.title());
await devtools.close(); await browser.deleteSession();})().catch((e) => console.error(e));