Как поправить код в javascript

sotex2

Постоялец
Регистрация
9 Июн 2014
Сообщения
81
Решения
1
Реакции
1
Доброго времени суток. Подскажите есть скрипт он применяется в ZennoPoster. скрипт рабочий и предназначен для клика по надписи "Показать ещё 5", где цифра может меняться. надписи "Показать ещё 5" прикреплена к конкретному блоку "Нежилые помещения" и действия осуществляются только в этом блоке. сам скрипт отрабатывает и делает клик по надписи, но когда текст полностью исчезает даже из DOM страницы, то скрипт все равно продолжает кликать. как сделать так, чтобы после пропадания надписи скрипт прекращал работу. приложил скрипт и код из DOM.


JavaScript:
(function() {
    // Функция для клика по кнопке "Показать ещё"
    function clickShowMore() {
        try {
            const titles = document.querySelectorAll('.FlatGroups__Title-sc-jd2s28-15');

            for (let i = 0; i < titles.length; i++) {
                const title = titles[i];

                if (title.textContent.trim() === 'Нежилые помещения') {
                    const mainWrapper = title.closest('.FlatGroups__FlatGroupWrapper-sc-jd2s28-8');

                    if (mainWrapper) {
                        const showMoreBtn = mainWrapper.querySelector('.FlatGroupDetails__ButtonMore-sc-1uwm85r-3');

                        if (showMoreBtn) {
                            const buttonText = showMoreBtn.textContent.trim();

                            if (buttonText.includes('Показать ещё')) {
                                console.log('Кликаем по кнопке "Показать ещё"');
                                showMoreBtn.click();
                                console.log('Кликнули по кнопке "Показать ещё"');

                                // Задержка (блокирующая, но более совместимая)
                                var start = new Date().getTime();
                                for (var j = 0; j < 1e7; j++) {
                                    if ((new Date().getTime() - start) > 1000){
                                        break;
                                    }
                                }

                                return "CLICKED"; // Кликнули, нужно повторить
                            } else {
                                console.log('Кнопка "Показать ещё" не содержит ожидаемый текст.');
                            }
                        } else {
                            console.log('Кнопка "Показать ещё" не найдена.');
                        }
                    }
                }
            }

            console.log("Показать ещё" отсутствует. Завершаем работу.');
            return "DONE"; // Кнопки нет, заканчиваем
        } catch (error) {
            console.error('Произошла ошибка:', error);
            return "ERROR"; // Произошла ошибка
        }
    }

    let result = clickShowMore();
    return result; // Возвращаем результат
})();
 

Вложения

  • код из html.txt
    8,1 KB · Просмотры: 1
Как-то так должно заработать:

JavaScript:
(function () {

    function clickShowMore() {
        const title = [...document.querySelectorAll('.FlatGroups__Title-sc-jd2s28-15')]
            .find(el => el.textContent.trim() === 'Нежилые помещения');

        if (!title) {
            console.log('Блок "Нежилые помещения" не найден');
            return "DONE";
        }

        const wrapper = title.closest('.FlatGroups__FlatGroupWrapper-sc-jd2s28-8');
        if (!wrapper) {
            console.log('Wrapper не найден');
            return "DONE";
        }

        const showMoreBtn = wrapper.querySelector('.FlatGroupDetails__ButtonMore-sc-1uwm85r-3');

        // 🔴 КЛЮЧЕВОЕ УСЛОВИЕ
        if (!showMoreBtn) {
            console.log('Кнопка "Показать ещё" исчезла. Завершаем работу.');
            return "DONE";
        }

        const text = showMoreBtn.textContent.trim();

        if (!text.includes('Показать ещё')) {
            console.log('Кнопка без нужного текста. Завершаем.');
            return "DONE";
        }

        console.log('Кликаем по:', text);
        showMoreBtn.click();

        return "CLICKED";
    }

    return clickShowMore();
})();
 
скрипт после всех кликов по кнопке не останавливается.
 
Назад
Сверху