Показать сообщение отдельно
  #1 (permalink)  
Старый 09.07.2023, 01:59
Новичок на форуме
Отправить личное сообщение для SeDo4 Посмотреть профиль Найти все сообщения от SeDo4
 
Регистрация: 08.01.2014
Сообщений: 3

Дождаться загрузки данных после клика по ссылке
Добрый день.

Есть код (запускается в консоле браузера)
var itemСount = 5

var i=0
f=function(){
    document.getElementsByClassName('b-link js-show-item')[i].click()            
    var trackId = document.getElementsByClassName('b-form__text b-form__text_state_item-value b-tracking')[0].outerText
    console.log(trackId)
//и ещё много кода
    
    i=i+1
    
    if (i<itemСount) { 
        setTimeout(f, "1000")
    }
}
f();


Он перебирает нужные элементы и кликает по ним. При клике на сайте открывается попап, из которого забирается нужная информация. И так, пока не будет выполнено условие.

Суть проблемы в том, что при первом запуске в консоле ошибка:
Код:
Cannot read properties of undefined (reading 'outerText')
Подозреваю это из-за того, что попап с данными ещё не успел появится. Так как при повторном запуске кода ошибка исчезает.

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

Попробовал добавить setInterval, но либо не так сделал, либо он не помогает:

var itemСount = 5

var i=0
f=function(){
    console.log(i)
    document.getElementsByClassName('b-link js-show-item')[i].click()
    console.log('click')
    let k = setInterval(function() {
        console.log(i + '<---in setInterval')
        if (document.getElementsByClassName('b-form__text b-form__text_state_item-value b-tracking')[0]){
            var trackId = document.getElementsByClassName('b-form__text b-form__text_state_item-value b-tracking')[0].outerText
            console.log(trackId)
            clearInterval(k);
            console.log("element found")
        } else {
            console.log('another try')
        }
    }, 1000);
    
    i=i+1
    
    if (i<itemСount) { 
        console.log(i)
        setTimeout(f, "1000")
    }
}
f();


При первом запуске получаю следующее:
Код:
0
click
1
undefined
content<---in setInterval
 78683603532394
element found
content

Uncaught TypeError: Cannot read properties of undefined (reading 'click')
И снова, если запустить второй раз, то всё ок работает до момента перезагрузки страницы.

В общем, что-то никак у меня не выходит решить проблему. Прошу помощи.
Ответить с цитированием