Автоматизация задач браузера

Протокол связи - это система правил, которая позволяет двум или более объектам системы связи передавать информацию через любые вариации физической величины. Протокол определяет правила, синтаксис, семантику и синхронизацию связи, а также возможные методы устранения ошибок.

Что это ?

Инструменты разработчика Chrome (CDP) позволяют нам взаимодействовать с браузерами Chromium и Chrome и помогают выполнять

  • Автоматизация тестирования
  • Отслеживание и устранение неполадок
  • Профилирование и инструменты

Многие библиотеки и расширения браузера используют протокол для управления различными действиями в браузере. Например, Puppeteer предоставляет API более высокого уровня поверх CDP.

Начиная

В вашем проекте узла или глобально давайте установим chrome-remote-interface один из множества доступных сторонних клиентов.

npm i chrome-remote-interface

Эта библиотека помогает нам взаимодействовать с Chrome или одним из поддерживаемых браузеров, работающих с известным портом отладки. По умолчанию: localhost: 9222.

Чтобы запустить Chrome с портом отладки на Mac с профилем удаленного пользователя,

/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222 --user-data-dir=remote-profile

Как только вы это сделаете, вы должны увидеть, что открылся новый экземпляр chrome, а в оболочке вы увидите следующее

Давай сделаем трассировку

Предположим, вы хотите сбросить все запросы, которые выполняются при переходе по URL-адресу.

Когда вы выполняете этот код на запущенном Chrome, вы должны увидеть, что страница загружается.

и на консоли вы должны увидеть, что все URL-адреса запросов печатаются

Теперь, чтобы понять, что здесь происходит

  • Сначала мы устанавливаем соединение с хромом, используя порт отладки.
  • Протокол определяет ряд доменов, таких как Сеть, Страница, Отладчик и т. Д., И каждый из них предоставляет набор методов, которые можно использовать для отслеживания действий, относящихся к этому домену.
  • Мы включаем каждый из этих доменов и обеспечиваем возможность отслеживания действий.
  • Зарегистрируйте обратный звонок на интересующее нас событие
Network.requestWillBeSent((params) => {
      console.log(params.request.url);
});
  • Затем мы переходим к URL-адресу, по которому хотим провести трассировку.

Чтобы сделать его немного интереснее, предположим, что вы хотите создать служебную программу, которая будет подсчитывать все изображения, загружаемые как часть главной страницы вашего веб-сайта. Возможно, вы хотите ограничить количество изображений, которые отображаются как часть вашей домашней страницы, и хотите отслеживать их во время процесса CI. Если количество изображений превышает количество, вы хотите уведомить разработчиков.

Теперь, когда вы запустите этот код, вы увидите следующий результат в консоли.

Здесь мы получаем количество ответов, сгруппированных по их типу, а затем их подсчитываем. Вы можете интегрировать этот сценарий в свой конвейер интеграционного тестирования, чтобы гарантировать, что количество изображений находится в пределах вашего бюджета.

Такие инструменты, как lighthouse и Tracerbench, используют CDP для сбора большинства своих показателей, таких как время пользователя, размер ответа и т. Д., И позволяют делать следующее:

  • Выполнить аудит
  • Тесты производительности
  • Лучшие практики и отчеты

использованная литература