Добрый день.
Есть код (запускается в консоле браузера)
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') |
И снова, если запустить второй раз, то всё ок работает до момента перезагрузки страницы.
В общем, что-то никак у меня не выходит решить проблему. Прошу помощи.