Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Скриптом в tampermonkey для сайта (https://javascript.ru/forum/dom-window/82852-skriptom-v-tampermonkey-dlya-sajjta.html)

Runizag 18.07.2021 07:25

Скриптом в tampermonkey для сайта
 
Здравствуйте форумчане ,так как я в программирование не особо силен , нужна помощь чтобы сделать скрипт .
Суть скрипта обновить страницу в нужный момент , написать в форме поиска вписать заданный мой текст ,нажать кнопку найти ,затем что вышло в поиске нажать кнопку выбора .Сложно ли сделать такой скрипт?

Runizag 18.07.2021 07:55

нашел способ как обновить страницу в заданное время function refreshAt(hours, minutes, seconds) {
var now = new Date();
var then = new Date();

if(now.getHours() > hours ||
(now.getHours() == hours && now.getMinutes() > minutes) ||
now.getHours() == hours && now.getMinutes() == minutes && now.getSeconds() >= seconds) {
then.setDate(now.getDate() + 1);
}
then.setHours(hours);
then.setMinutes(minutes);
then.setSeconds(seconds);

var timeout = (then.getTime() - now.getTime());
setTimeout(function() { window.location.reload(true); }, timeout);
}

Теперь нужно сделать чтобы писался заданный текст в форму и нажималось найти Выглядет как то так

Runizag 18.07.2021 09:22

Цитата:

Сообщение от Rise (Сообщение 538753)
Зависит от сайта.

В общем надо чтобы написался заданный мной текст в скрипте в поле "введите название организации "и нажалась кнопка войти
Скриншот прикреплён выше

Runizag 18.07.2021 09:50

2-ое сообщение от меня
Цитата:

Сообщение от Rise (Сообщение 538755)
А это где?

[quote=Runizag;538751]нашел способ как обновить страницу в заданное время function refreshAt(hours, minutes, seconds) {
var now = new Date();
var then = new Date();

if(now.getHours() > hours ||
(now.getHours() == hours && now.getMinutes() > minutes) ||
now.getHours() == hours && now.getMinutes() == minutes && now.getSeconds() >= seconds) {
then.setDate(now.getDate() + 1);
}
then.setHours(hours);
then.setMinutes(minutes);
then.setSeconds(seconds);

var timeout = (then.getTime() - now.getTime());
setTimeout(function() { window.location.reload(true); }, timeout);
}

Теперь нужно сделать чтобы писался заданный текст в форму и нажималось найти Выглядет как то так

Runizag 18.07.2021 11:14

Цитата:

Сообщение от Rise (Сообщение 538757)
Runizag, результаты поиска и их кнопка выбора где в скриншоте?

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

Runizag 18.07.2021 13:13

Цитата:

Сообщение от Rise (Сообщение 538760)
Runizag, сайт не публичный что-ли?

Не особо ,для входа нужны данные специальные

Runizag 18.07.2021 17:57

судя по всему ни кто не поможет

Runizag 21.07.2021 09:41

Цитата:

Сообщение от Rise (Сообщение 538814)
Runizag,
(async () => {
    const values = [
        //hh:mm:ss   text
        ['10:20:00', '12'],
        ['20:30:00', '34'],
    ];

    const delay = (ms) => new Promise(resolve => setTimeout(resolve, ms));

    while (true) {
        const date1 = new Date();
        const time1 = date1.toLocaleTimeString('ru');
        const value = values.find(value => value[0] > time1);

        if (!value) break;

        const date2 = new Date(Number(date1));
        date2.setHours(...value[0].split(':'), 0);

        await delay(date2 - date1);

        const textInput = document.querySelector('#g-search input[type=text]');
        textInput.value = value[1];

        const findButton = document.querySelector('#g-search button[type=button]');
        findButton.click();

        await delay(5000);

        const selectButton = document.querySelector('selector?');
        if (selectButton) selectButton.click();
    }
})();

То ли я не еду, то ли барашки не идут =) Что то ничего не происходит

Runizag 21.07.2021 09:47

вот видео как должно работать , т.е сайт должен обновиться в заданное время + написать в поле заданный мной текст и нажать кнопку на
йти

Runizag 21.07.2021 11:41

Rise,
А извиняюсь я просто не знал ,не давно нахожусь на этом форуме, я думал не обязательно знать что находиться дальше, мне же по идее текст в формочку надо намечать и нажать найти,но если надо ,то вот ,вот что происходит дальше

Runizag 21.07.2021 11:46

Rise,

вот еще видео
хэш бесполезно писать , он генерируется каждый раз по разному,но value где reserveform[gardenid] у всех постоянный ,он не меняется

Runizag 21.07.2021 12:12

Rise,
Ссылки открыл проверьте еще раз, да конечно нужно знать, что нужно выбрать только первый

Runizag 21.07.2021 12:47

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

Runizag 21.07.2021 14:12

Rise,
да мне хотя бы чтобы выбор группы был ,а последнюю кнопку "получить направления " я сам смогу нажать ,но так название сайта/ru/reserv/get/organization(тут осуществляется поиск и выбор группы) потом после выбора группы идет названиесайта/ru/reserv/get/organization/group (тут находиться сами направления ) ,но брать мне их не обязательно

Runizag 21.07.2021 14:30

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

Runizag 21.07.2021 15:13

Rise,
вводом текста ускоряет ,большая скорость интернета не ускорит ,это уже проверено , мне просто нужно ввести нужны мне текст и нажалась кнопка найти и выбор группы ,все больше ничего не надо ,я знаю что это очень сильно ускорит взятие направление ,просто нужно чтобы скрипт сделал за меня 4 действия обновил ,ввел текст ,нажал найти ,и выбрал группу ,если возможно сделать без ввода текста а просто по айди названия ,то было бы вообще лучше . Типо что то нажимал выбрать группу по value ,потому что value каждой организации мне известен всегда

Runizag 21.07.2021 15:15

Rise,
Если есть возможность могу в дискорде наглядно все показать и объяснить что и как там работает и что и как мне надо

Runizag 21.07.2021 15:41

Rise,
у каждого названия есть свой типа айди вот к примеру у него 10068 у других он другой ,но всегда он один и цифра это не его порядковый номер ,а просто айди ,если сверху на сайте нажмете "Дошкольные организации" ,то там всех их названия будут и айди если перейдете по ссылке

Runizag 21.07.2021 16:05

Rise,
это я просто так для информации написал ,может она пригодится ,а так да я по названию заведения ищу

Rise 21.07.2021 16:11

Runizag,
(async () => {
    const hours = 8, minutes = 0, seconds = 0, group = 91;

    const delay = (ms) => new Promise(resolve => setTimeout(resolve, ms));

    if (sessionStorage.reload == 'yes') {
        sessionStorage.reload = 'no';

        await delay(4000); // Ожидание до загрузки данных (миллисекунды)

        const textInput = document.querySelector('#g-search #name-block input[type=text]');
        textInput.value = group;

        const findButton = document.querySelector('#g-search button[type=button]');
        findButton.click();

        await delay(2000); // Ожидание до результата поиска

        const selectButton = document.querySelector('[class*=g-list-item]:not([style*=none]) button[type=submit]');
        if (selectButton) selectButton.click();

    } else {
        await delay(new Date().setHours(hours, minutes, seconds, 0) - new Date()); // Ожидание до перезагрузки
        sessionStorage.reload = 'yes';
        location.reload();
    }
})();


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