Как написать цикл на js, чтобы выполнить его через консоль?

Рейтинг: 1Ответов: 1Опубликовано: 12.03.2023

Всем привет!

Есть задача, на странице есть элемент, по которому я могу кликнуть написав команду в консоли браузера

document.querySelector(".icon_remove").click();

После этого появляется ещё один элемент, по которому я также могу успешно кликнуть

document.querySelector(".button_noround").click();

Затем снова появляется первый элемент

То есть я пишу и выполняю эти команды по отдельности, но циклом сделать это не получается:

function sleep(milliseconds) {
  const date = Date.now();
  let currentDate = null;
  do {
    currentDate = Date.now();
  } while (currentDate - date < milliseconds);
}
for (i = 0; 10; i++) {
  document.querySelector(".icon_remove").click();
  sleep(500);
  document.querySelector(".button_noround").click();
  sleep(500);
}; // задержка в 1 секунду

Подскажите, как скорректировать цикл

Пробовал так же записать цикл так:

function sleep(milliseconds) {   const date = Date.now();   let currentDate = null;   do {your text` currentDate = Date.now(); } while (currentDate - date < milliseconds); } let removeButtons = document.querySelectorAll(".icon_remove"); let noroundButtons = document.querySelectorAll(".button_noround");

for (let i = 0; i < removeButtons.length && i < noroundButtons.length; i++) { removeButtons[i].click(); sleep(1000); noroundButtons[i].click();

if (i < removeButtons.length - 1 && i < noroundButtons.length - 1) { removeButtons = document.querySelectorAll(".icon_remove"); noroundButtons = document.querySelectorAll(".button_noround"); } }`

Консоль по-прежнему пишет "undefined"

Ответы

▲ 0

Подскажите, как скорректировать цикл

Поскольку ТС не предоставил исходный пример с кликабельными элементами, я сделал некую модель самостоятельно, т.с. для иллюстрации процесса.

Мой пример поможет понять как сделать один из вариантов "кликанья" по ключевым элементам, дав им возможность отработать свои синхронные скрипты.

Если же скрипты будут асинхронные - вполне возможно что таймаута в 1с им может и не хватить. Тогда нужно будет использовать другие механизмы JS, которые позволяют следить за изменениями в ДОМ...

/* подготовительные работы */

const ot = document.querySelector("#test")
ot.addEventListener('click', e => {
  const ob = e.target.closest('.button_noround')
  if (!ob) return
  let o = document.createElement('p')
  o.textContent = new Date().toISOString()
  ot.insertAdjacentElement('beforeend', o)
})

document.querySelector(".icon_remove").addEventListener('click', _ => {
  const o = document.createElement('button')
  o.classList.add('button_noround')
  o.textContent = 'button_noround ' + new Date().toISOString()
  ot.insertAdjacentElement('beforeend', o)
})

/* окончание подготовительных работ */

/* собственно тест */

setTimeout(function test() {
  test.count = test.count ?? 0
  if (++test.count > 5) return
  document.querySelector(".icon_remove").click()
  setTimeout(_ => {
    document.querySelector(".button_noround").click()
    setTimeout(test, 1000)
  }, 1000)
}, 1000)
<div id='test'>
  <button class='icon_remove'>icon_remove</button>
</div>