Есть ли способ программно получить доступ к разделу «Удаленные устройства» Chrome Devtools и управлять им?

Я понимаю, что протокол Chrome DevTools предоставляет Google Chrome DevTools через API для программного управления, а puppeteer предоставляет для этого реализацию Node.js. Однако, если я не ошибаюсь, puppeteer не позволяет нам делать все, которые может сделать протокол DevTools.

Если я хочу удаленно отлаживать свой браузер Android Chrome, как я могу сделать вручную, перейдя в раздел «Удаленные устройства» моего DevTools, есть ли способ сделать это в обход кукловода? Есть ли пакет, который позволяет нам получить доступ к большему количеству основных функций протокола DevTools?

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
1 030
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Да, вы можете это сделать. puppeteer — это просто оболочка вокруг Протокол Chrome DevTools. Чтобы понять, как работает протокол, вы можете взглянуть на Основы протокола, где объясняются основы.

Для общения на этом более низком уровне вы также можете использовать puppeteer. Ознакомьтесь с документацией CDPSession, которая раскрывает «низкоуровневую» часть API.

Минимальный пример:

const client = await page.target().createCDPSession(); // creates a "low level" session
await client.send('COMMAND'); // sends the command to the browser
client.on('MESSAGE', () => { /* message from the browser received */ });

Альтернативы

Если вы не хотите использовать puppeteer, есть несколько других библиотек. Наиболее часто используемый для Node.js — хром-удаленный-интерфейс, более низкоуровневый, чем puppeteer. Согласно к документам:

chrome-remote-interface [...] is a general purpose 1:1 Node.js binding for the Chrome Debugging Protocol. Use it if you need all the power of the raw protocol, e.g., to implement your own high-level API.

Есть также несколько других библиотек (также для других языков). Вы можете найти полный список здесь.

Это похоже на то, что я могу использовать. Спасибо! Не могли бы вы помочь мне со списком параметров, которые client.send('COMMAND') примет? Я смог найти только пример в репозитории github, т.е. await session.send('Animation.enable');

shubhendu madhukar 10.04.2019 20:20

Полный список вы найдете в файле Средство просмотра протокола Chrome DevTools. В качестве примера вы можете найти Animation.enableздесь.

Thomas Dondorf 10.04.2019 20:29

Я попытался найти решение для этого вручную. Я запустил Chrome в автономном режиме и начал сеанс отладки на локальном хосте: 9222. Хотя я мог видеть события на других вкладках devtools, таких как сеть, память, аудит и т. д., я не видел никаких событий для вкладки «Удаленные устройства». Дополнительная отладка показала ошибку ниже. Uncaught TypeError: Невозможно установить свойство «discoverUsbDevices» неопределенного в HTMLInputElement.eval. Когда я установил флажок «Обнаружить удаленные устройства»,

shubhendu madhukar 17.04.2019 12:43

Другие вопросы по теме