Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Имитировать нажатие на кнопки на странице через скрипт tampermonkey (https://javascript.ru/forum/misc/81994-imitirovat-nazhatie-na-knopki-na-stranice-cherez-skript-tampermonkey.html)

realmen80 26.02.2021 10:17

Имитировать нажатие на кнопки на странице через скрипт tampermonkey
 
Если на странице https://edr-info.com/ru/customer-search в самом выбрать вариант "Искать физических лиц-предпринимателей" и внизу нажать "Поиск", то появляется список предпринимателей.

Адрес скрыт под кнопкой, вот так:


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

Через поиск нашел похожий код, подправил, добавил его в tampermonkey, но он что-то не срабатывает...

Вот код скрипта с помощью которого пробовал прокликать адреса на странице:
// ==UserScript==
// @name         Tert script
// @namespace    [url]http://tampermonkey.net/[/url]
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        [url]https://edr-info.com/ru/customer-search[/url]
// @grant        none
// ==/UserScript==
(function() {
    'use strict';
document.querySelector (
    "d-flex align-items-center text-uppercase i[type='far fa-eye text-info pointer'] i"
).click();
})();


Вот кусок кода с кнопкой с классами:
<div class="d-flex align-items-center text-uppercase"><i class="fas fa-map-marker-alt pref-icon"></i> <span><!----> <i class="far fa-eye text-info pointer">
    Посмотреть</i></span></div>


Подскажите, пожалуйста, какой код скрипта сможет решить задачу. Заранее благодарен за помощь

рони 26.02.2021 10:35

realmen80,
document.querySelectorAll('i.far.fa-eye.text-info.pointer').forEach(i => i.click());

realmen80 26.02.2021 11:05

рони, спасибо за ответ.

Но что-то тоже не срабатывает у меня.

Вот показывает что скрипт выполняется, но не прокликаны кнопки:


Вот такой сейчас код скрипта:
// ==UserScript==
// @name         Tert script
// @namespace    [url]http://tampermonkey.net/[/url]
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        [url]https://edr-info.com/ru/customer-search[/url]
// @grant        none
// ==/UserScript==
(function() {
    'use strict';
document.querySelectorAll('i.far.fa-eye.text-info.pointer').forEach(i => i.click());
})();

рони 26.02.2021 11:51

Цитата:

Сообщение от realmen80
Но что-то тоже не срабатывает у меня.

нельзя клинуть, то чего нет на странице. скрипт надо запускать, после загрузки блоков с информацией, или долбить постоянно, код ниже
(function() {
    'use strict';
const f = () => {
document.querySelectorAll('i.far.fa-eye.text-info.pointer').forEach(i => i.click());
window.setTimeout(f, 1000)
};
f();
})();

realmen80 26.02.2021 12:20

рони, спасибо за помощь. Запуск в ручном режиме приведенного вами кода скрипта помогает - прокликивает кнопки, после загрузки информации.

Не пойму, почему этот же код не срабатывает в автоматическом режиме через tampermonkey?

Если я правильно понимаю, то строка window.setTimeout(f, 1000) указывает задержку во времени через которую должен выполниться скрипт, это нужно для того, чтобы сначала загрузились блоки с информацией путем нажатия на кнопку "Поиск", а уже после этого чтобы отработал скрипт.

Я установил больше задержку window.setTimeout(f, 7000) , но автоматически скрипт не отрабатывает через tampermonkey. Когда запускаю вручную - все отлично работает.

рони 26.02.2021 13:40

Код:

// ==UserScript==
// @name        https://edr-info.com/ru/customer-search
// @namespace  https://edr-info.com/ru/customer-search
// @include    https://edr-info.com/ru/customer-search*
// @version    1
// @grant      none
// ==/UserScript==
window.addEventListener('DOMContentLoaded', function() {
    'use strict';
    const f = () => {
        document.querySelectorAll('i.far.fa-eye.text-info.pointer').forEach(i => i.click());
        window.setTimeout(f, 1000)
    };
    f();
});



Часовой пояс GMT +3, время: 14:26.