Я попробовал на базовых действиях, с помощью css селекторов и xpath, были срабатывания через раз, было игнорирование кликов редитом.
В качестве рабочего решения нормально себя показал js path на javascript.
js path берём из devtools:
,
что позволило нормально отработать с shadow root (opened) и клики срабатывали более стабильно.
мы берём js path и с помощью фри версии gemini просим создать клик на кнопке, иногда просто click() не срабатывает и нужен ещё и фокус, но всё равно, в итоге клик удаётся реализовать и клик принимает редит
тема подсмотрена мной на ютубе, кому интересно можете поискать по shadow root или shadow dom.
в результате того, что реддит постоянно меняет вёрстку, приходится js path обновлять и это привело к тому, что об ошибке я настроил уведомления в телеграмм бота со скриншотами
Выводы:
добавить js path в конструктор действий и контекстное меню(правой кнопкой мыши) в зеннопостер
добавить вывод оповещений, не в tg или другие сервисы, а внутри зенно, сейчас лог очень общий и туда сыпется всё подряд, сделать отдельную вкладку для важных оповещений
добавить вывод события isTrusted: true, которое только для чтения, в PM для отслеживания кликов и других действий, я так понял, что результат по этому событию отдаёт браузер и его можно получить и вывести в информер
Иллюзия «Closed» режима и как его взломать
Мы говорили, что Shadow DOM бывает open (доступен через .shadowRoot) и closed (возвращает null). Многие разработчики думают, что closed — это надежная защита от парсинга. Это не так.
твой скрипт запускается до того, как сайт создал свои компоненты (на этапе document-start), ты можешь перехватить создание теневых деревьев:
// Перехватываем нативный метод attachShadow
const originalAttachShadow = Element.prototype.attachShadow;
Element.prototype.attachShadow = function(options) {
// Принудительно делаем ВСЕ закрытые деревья открытыми
if (options.mode === 'closed') {
options.mode = 'open';
}
return originalAttachShadow.call(this, options);
};
клик на с# по js path срабатывает для instance.ActiveTab.MainDocument.EvaluateScript("document.querySelector('...').click();");
клик, который отдаёт isTrusted true instance.ActiveTab.FullEmulationMouseClick("left", "click"); по координатам
В качестве рабочего решения нормально себя показал js path на javascript.
js path берём из devtools:
что позволило нормально отработать с shadow root (opened) и клики срабатывали более стабильно.
мы берём js path и с помощью фри версии gemini просим создать клик на кнопке, иногда просто click() не срабатывает и нужен ещё и фокус, но всё равно, в итоге клик удаётся реализовать и клик принимает редит
тема подсмотрена мной на ютубе, кому интересно можете поискать по shadow root или shadow dom.
в результате того, что реддит постоянно меняет вёрстку, приходится js path обновлять и это привело к тому, что об ошибке я настроил уведомления в телеграмм бота со скриншотами
Выводы:
добавить js path в конструктор действий и контекстное меню(правой кнопкой мыши) в зеннопостер
добавить вывод оповещений, не в tg или другие сервисы, а внутри зенно, сейчас лог очень общий и туда сыпется всё подряд, сделать отдельную вкладку для важных оповещений
добавить вывод события isTrusted: true, которое только для чтения, в PM для отслеживания кликов и других действий, я так понял, что результат по этому событию отдаёт браузер и его можно получить и вывести в информер
Иллюзия «Closed» режима и как его взломать
Мы говорили, что Shadow DOM бывает open (доступен через .shadowRoot) и closed (возвращает null). Многие разработчики думают, что closed — это надежная защита от парсинга. Это не так.
твой скрипт запускается до того, как сайт создал свои компоненты (на этапе document-start), ты можешь перехватить создание теневых деревьев:
// Перехватываем нативный метод attachShadow
const originalAttachShadow = Element.prototype.attachShadow;
Element.prototype.attachShadow = function(options) {
// Принудительно делаем ВСЕ закрытые деревья открытыми
if (options.mode === 'closed') {
options.mode = 'open';
}
return originalAttachShadow.call(this, options);
};
клик на с# по js path срабатывает для instance.ActiveTab.MainDocument.EvaluateScript("document.querySelector('...').click();");
клик, который отдаёт isTrusted true instance.ActiveTab.FullEmulationMouseClick("left", "click"); по координатам
Последнее редактирование:



