Показать сообщение отдельно
  #1 (permalink)  
Старый 05.02.2021, 13:02
Новичок на форуме
Отправить личное сообщение для MichaelYT Посмотреть профиль Найти все сообщения от MichaelYT
 
Регистрация: 23.01.2021
Сообщений: 7

Неправильная последовательность выполения в массиве с перебором
Доброго времени суток!
Имеется данный скрипт (спасибо voraa)
let zaprosi = ["Запрос1", "Запрос2", "Запрос3"]
 
const delay = (t) =>new Promise (res => setTimeout (res, t));
 
const findAndClick = async (channelName, td) => {
    while (true) {
        const blocks = Array.from(document.querySelectorAll('div#channel-info'));
 
        let elem = blocks.find((item) => item.innerText.trim().toLowerCase() == channelName.toLowerCase())
 
        if (elem) {
            elem.parentNode.parentNode.querySelector('a#thumbnail').click();
            return;
        } else {
            window.scrollBy(0, 5500);
            await delay (td);
        }
    }
}
 
;(async function () {
    for (const zap of zaprosi) {
        document.querySelector('input#search').value = zap;
        document.querySelector('button#search-icon-legacy').click();
        await findAndClick('НАЗВАНИЕ КАНАЛА', 3000)
    }
})()


Его суть: открыт сайт ЮТУБ. Взял 1ую переменную из "zaprosi", вставил в поисковую строку, нажал на поиск. Далее пошел поиск по странице на наличие определенного канала, если он не был найден - скролл страницы, до тех пор, пока не найдет.
Далее клик по нужному видосу с нужного канала. Далее взял 2ую переменную из "zaprosi" и всё пошло по кругу. Потом третью...

Проблема вот в чем: скролл и поиск запускаются раньше времени, и всё ступорится. Прошу помощи!
Ответить с цитированием