Клики с помощью JS path на JavaScript

prostors

Client
Регистрация
16.12.2020
Сообщения
1 442
Благодарностей
70
Баллы
48
Я попробовал на базовых действиях, с помощью css селекторов и xpath, были срабатывания через раз, было игнорирование кликов.

В качестве рабочего решения нормально себя показал js path на javascript.

js path берём из devtools:
141193
,
что позволило нормально отработать с 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"); по координатам:

прикрепляю шаблон 7.8.15 с 3 действиями - поиск координат по js path, split по разделителю для получения 4-х координат и клик мышью с полной эмуляцией, распределение равномерное
141365


но, в рамках соблюдения анонимности, я не рекомендую дёргать js path или xpath каждый раз при поиске координат кнопок, а рекомендую 1 раз собрать и хранить координаты в txt файле.

прикрепляю шаблон с получением isTrusted - true с кликом по координатам

очередное обновление:
мои разрешения экранов

1903x937
1903x850
1519x820
1349x650
1349x700
и тд

xml, который я сохраняю в файл, для каждого размера экрана браузера:

xml для координат кликов по кнопкам:
<?xml version="1.0" encoding="UTF-8"?>
<root>
  <objectName>{-Variable.displayx-}</objectName>
  <display{-Variable.displayx-}>
    <Avatar name="Avatar">
      <coords x1="{-Variable.x1-}" y1="{-Variable.y1-}" x2="{-Variable.x2-}" y2="{-Variable.y2-}" />
    </Avatar>
    <usermenu name="usermenu">
      <coords x1="{-Variable.x1usermenu-}" y1="{-Variable.y1usermenu-}" x2="{-Variable.x2usermenu-}" y2="{-Variable.y2usermenu-}" />
    </usermenu>
        <downloadbanner name="downloadbanner">
      <coords x1="{-Variable.x1downloadbanner-}" y1="{-Variable.y1downloadbanner-}" x2="{-Variable.x2downloadbanner-}" y2="{-Variable.y2downloadbanner-}" />
    </downloadbanner>
        <upload name="upload">
      <coords x1="{-Variable.x1upload-}" y1="{-Variable.y1upload-}" x2="{-Variable.x2upload-}" y2="{-Variable.y2upload-}" />
    </upload>
        <savebanner name="savebanner">
      <coords x1="{-Variable.x1savebanner-}" y1="{-Variable.y1savebanner-}" x2="{-Variable.x2savebanner-}" y2="{-Variable.y2savebanner-}" />
    </savebanner>
  </display{-Variable.displayx-}>
</root>
файл храню на сервере и подгружаю для каждого запуска
 

Вложения

Последнее редактирование:

kagorec

Client
Регистрация
24.08.2013
Сообщения
1 137
Благодарностей
647
Баллы
113
Хороший конкурс и статьи забавные
 

smartmail

Client
Регистрация
18.04.2015
Сообщения
470
Благодарностей
245
Баллы
43
Последнее редактирование модератором:
  • Спасибо
Реакции: kagorec и seodamage

prostors

Client
Регистрация
16.12.2020
Сообщения
1 442
Благодарностей
70
Баллы
48
пишите по теме конкурсной работы в комментариях, все остальные комментарии перенесите в другие разделы и пишите изначально там
@smartmail @kagorec
 

prostors

Client
Регистрация
16.12.2020
Сообщения
1 442
Благодарностей
70
Баллы
48
Друзья!
в рамках конкурса я готов помочь вам с js path и кодом для эмуляции кликов по вашим элементам, пишите заявки в этой теме, будем обсуждать и искать решение!
 
  • Спасибо
Реакции: Sergodjan

prostors

Client
Регистрация
16.12.2020
Сообщения
1 442
Благодарностей
70
Баллы
48
было обновление, где я добавил про поиск координат, сплит и клик по кнопке, будут ещё обновления, ждите и заходите проверяйте обновления!
 
Последнее редактирование:

prostors

Client
Регистрация
16.12.2020
Сообщения
1 442
Благодарностей
70
Баллы
48
новое обновление.
пример, как получить isTrusted - true, если вы знаете другой способ, кроме как по координатам - пишите тут.
 

prostors

Client
Регистрация
16.12.2020
Сообщения
1 442
Благодарностей
70
Баллы
48
обновление.
у меня настроены разные разрешения экранов. поэтому координаты кликов меняются. Смотрите очередное обновление внизу статьи. какие разрешения экранов браузера используете вы - пишите тут, будем обсуждать.
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)