Скриптом в tampermonkey для сайта
Здравствуйте форумчане ,так как я в программирование не особо силен , нужна помощь чтобы сделать скрипт .
Суть скрипта обновить страницу в нужный момент , написать в форме поиска вписать заданный мой текст ,нажать кнопку найти ,затем что вышло в поиске нажать кнопку выбора .Сложно ли сделать такой скрипт? |
нашел способ как обновить страницу в заданное время 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); } Теперь нужно сделать чтобы писался заданный текст в форму и нажималось найти Выглядет как то так |
Цитата:
|
Цитата:
Скриншот прикреплён выше |
Цитата:
Цитата:
|
2-ое сообщение от меня
Цитата:
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, результаты поиска и их кнопка выбора где в скриншоте?
|
Цитата:
|
Runizag, сайт не публичный что-ли?
|
Цитата:
|
судя по всему ни кто не поможет
|
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, во-первых, не показан код кнопки Выбрать группу, во-вторых, не показано что после клика по ней происходит, в-третьих, не надо цитировать полностью мои посты есть Цитата выделенного или просто кликнуть по моему нику.
|
Rise,
А извиняюсь я просто не знал ,не давно нахожусь на этом форуме, я думал не обязательно знать что находиться дальше, мне же по идее текст в формочку надо намечать и нажать найти,но если надо ,то вот ,вот что происходит дальше |
Rise,
вот еще видео хэш бесполезно писать , он генерируется каждый раз по разному,но value где reserveform[gardenid] у всех постоянный ,он не меняется |
Цитата:
Цитата:
Также неизвестно, может ли быть в поиске несколько результатов, если да, то выбрать все или только первый. Или по вашему это тоже не обязательно знать? Цитата:
Цитата:
|
Rise,
Ссылки открыл проверьте еще раз, да конечно нужно знать, что нужно выбрать только первый |
Runizag, так Получить направление тоже надо кликать? И это страница с другим адресом?
|
Rise,
нет, ее не нужно нажимать ,в общем сайт выдает направление в ровно 7 часов утра, иногда чуть раньше иногда чуть позже ,для этого нужно ,обновить сайт ,после чего появиться группы, т.к появляется групп очень много нужно воспользоваться поиском , и нужно нажать выбрать группу потом , в общем как то так, . Просто для того чтобы это все появилось нужно залогиниться на сайте через паспортные данные, по этому не получиться просто так дать ссылку на сайт. Но если есть такая возможность то можно и нажать кнопку получить направление ,выглядит как то так |
Runizag, tampermonkey это userscripts, userscript работает с открытой страницей, если страницы разные, то реализовать скрипт будет сложнее. Если поиск на странице X, выбрать - на странице Y, направление - на странице Z, это три разные страницы.
|
Rise,
да мне хотя бы чтобы выбор группы был ,а последнюю кнопку "получить направления " я сам смогу нажать ,но так название сайта/ru/reserv/get/organization(тут осуществляется поиск и выбор группы) потом после выбора группы идет названиесайта/ru/reserv/get/organization/group (тут находиться сами направления ) ,но брать мне их не обязательно |
Цитата:
|
Rise,
Проблема в секундах ,все эти направления забирают за секунды ,если ускорить процесс хотя бы на нажатие пару кнопок то процесс существенно ускориться ,просто я думал что это реализовать будет не тяжело ,но я понимаю что переход на другую страницу будет проблемно реализовать , до этого у меня был вот такой скрипт я просто вбивал нужное мне время в скрипте , а дальше вбивал в поиске нужную цифру нажимал найти и нажимал выбрать группу, а хотелось бы сократить действия так чтобы , я вбил нужное время и нужную группу ,а кнопку получить направления я брал сам уже |
Цитата:
|
Rise,
вводом текста ускоряет ,большая скорость интернета не ускорит ,это уже проверено , мне просто нужно ввести нужны мне текст и нажалась кнопка найти и выбор группы ,все больше ничего не надо ,я знаю что это очень сильно ускорит взятие направление ,просто нужно чтобы скрипт сделал за меня 4 действия обновил ,ввел текст ,нажал найти ,и выбрал группу ,если возможно сделать без ввода текста а просто по айди названия ,то было бы вообще лучше . Типо что то нажимал выбрать группу по value ,потому что value каждой организации мне известен всегда |
Rise,
Если есть возможность могу в дискорде наглядно все показать и объяснить что и как там работает и что и как мне надо |
Цитата:
|
Rise,
у каждого названия есть свой типа айди вот к примеру у него 10068 у других он другой ,но всегда он один и цифра это не его порядковый номер ,а просто айди ,если сверху на сайте нажмете "Дошкольные организации" ,то там всех их названия будут и айди если перейдете по ссылке |
Runizag, ну и что, вы же ищете не по этому айди, а по номеру группы, или вы теперь будете вместо 91 в поле 10068 вводить?
|
Rise,
это я просто так для информации написал ,может она пригодится ,а так да я по названию заведения ищу |
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, время: 16:45. |