Если вы когда-либо работали с Puppeteer, у вас могли возникнуть проблемы с нажатием всплывающего виджета cookie. Я здесь, чтобы помочь вам!

В Stack Overflow я читал о том, что у многих людей возникают проблемы с автоматизацией задачи нажатия на «неизвестное» всплывающее окно. Может быть множество причин, по которым вы хотите автоматизировать нажатие этих всплывающих окон, но общая проблема остается прежней.

Эта проблема возникает у всех, кому нужно щелкнуть всплывающее окно с согласием на использование файлов cookie. Обычно их называют CMP (платформы управления согласием). В большинстве стран Европы это юридические требования, если вы хотите показывать рекламу или иным образом устанавливать файлы cookie для отслеживания ваших пользователей.

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

Введение

Не существует общего способа щелчка по этим всплывающим виджетам, поскольку они реализованы разными способами. Однако то, что мы хотим щелкнуть, всегда является некоторым элементом HTML на странице. Я еще не встречал всплывающее окно, на которое технически невозможно было нажать с помощью автоматизации.

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

Чтобы достичь вышеуказанного результата, я создал пакет npm здесь: https://www.npmjs.com/package/puppeteer-cmp-clicker

Как я создавал пакет, описано здесь. Основная идея заключается в том, что я хочу, чтобы люди вносили свой вклад, поэтому набор стратегий для различных всплывающих окон (в основном CMP) и известных селекторов идентификаторов и классов. В настоящее время базовая функция выглядит примерно так:

В настоящее время библиотека содержит небольшой список известных CMP с определенной стратегией того, как нажимать на них. Это может быть связано с тем, что они используют iframe или другие «сложные» структуры. Помимо этого, в пакет включен глобальный список селекторов идентификаторов и селекторов классов. Эти списки расширяются при настройке пакета, но общая цель состоит в том, чтобы включить в модуль как можно больше известных стратегий, идентификаторов и классов.



Будет обновлено.

Дополнительные материалы на PlainEnglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter и LinkedIn. Посетите наш Community Discord и присоединитесь к нашему Коллективу талантов.