DevTools прослушивает ws: //127.0.0.1: 9222 / devtools / browser /
@ AndreaCardaci в документации Загрузка URL-адреса в отдельном контексте указывает, что при использовании Google Chrome в режиме без головы :
Обычный пример кода запускается на новой одноразовой вкладке в отдельном контексте (воспринимается как профили инкогнито) каждый раз.
Как порядок получения версии браузера, начиная с Chrome 62, целевой URL-адрес браузера генерируется во время выполнения и может быть получен через конечную точку /json/version
и откат к /devtools/browser
, если нет.
Вот соответствующий код:
const CDP = require('chrome-remote-interface');
async function doInNewContext(action) {
// fetch the browser version (since Chrome 62 the browser target URL is
// generated at runtime and can be obtained via the '/json/version'
// endpoint, fallback to '/devtools/browser' if not present)
const {webSocketDebuggerUrl} = await CDP.Version();
// connect to the DevTools special target
const browser = await CDP({
target: webSocketDebuggerUrl || 'ws://localhost:9222/devtools/browser'
});
// create a new context
const {Target} = browser;
const {browserContextId} = await Target.createBrowserContext();
const {targetId} = await Target.createTarget({
url: 'about:blank',
browserContextId
});
// connct to the new context
const client = await CDP({target: targetId});
// perform user actions on it
try {
await action(client);
} finally {
// cleanup
await Target.closeTarget({targetId});
await browser.close();
}
}
// this basically is the usual example
async function example(client) {
// extract domains
const {Network, Page} = client;
// setup handlers
Network.requestWillBeSent((params) => {
console.log(params.request.url);
});
// enable events then start!
await Promise.all([Network.enable(), Page.enable()]);
await Page.navigate({url: 'https://github.com'});
await Page.loadEventFired();
}
doInNewContext(example);
Более того, согласно Получите целевой URL браузера (ws: // localhost: 9222 / devtools / browser / ...) программно конечная точка доступна через http://127.0.0.1:9222/json/version
в webSocketDebuggerUrl
поле. Таким образом, в качестве альтернативы, если вы запускаете chrome с опцией --remote-debugging-port=0
, оба port и endpoint записываются в файл DevToolsAcivePort в папке профиля браузера.
Заключение
Эта ошибка не влияет на @Test
, и вы можете пока ее игнорировать.