Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

204
Vistas
no iterar hasta que se cumpla la condición

Mi mente está a punto de romperse tratando de resolver esto.

Estoy tratando de automatizar la adición de algunas máquinas a una lista desde la consola de Google Chrome, ya que el sitio web no es mío y no tengo acceso al código.

ingrese la descripción de la imagen aquí

Tengo una gran lista de máquinas que necesito agregar a la columna de la derecha, no puedo importarlas, por eso estoy tratando de automatizar el proceso.

Este es mi código:

 // input box var search = document.getElementById( "CustomControl_ml_ms_m_si_m_tic_pc_xAssignedResources_m_computerSelector_WrappedSelector_ml_ms_m_si_m_tic_pc_xAssignedResources_m_computerSelector_WrappedSelector_mainGrid_ctl00_SearchBox" ); // add to list btn const addToList = document.querySelector(".scbMiddleCell input:nth-child(2)"); // first item on the left column const primeraCelda = document.querySelector(".scgc"); // change the value of the input box search.value = "XXX-MXXXX"; // create a keyup event var ev = document.createEvent("Event"); ev.initEvent("keyup"); ev.which = ev.keyCode = 13; // run the event, this way the ajax function kicks in and i'm left with only one item in the left column search.dispatchEvent(ev); setTimeout(() => { // simulate the left item row selection primeraCelda.click(); }, 1000); setTimeout(() => { // click on the button to add the item to the right column addToList.click(); }, 1500);

Ahora, esto funciona solo cuando estoy usando un solo valor, si creo una matriz con valores y un bucle foreach, itera directamente a través de todos los elementos de la matriz y solo el último elemento se agrega a la columna derecha.

No puedo entender cómo NO iterar hasta que el elemento se agregue a la columna de la derecha.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Me tomó mucho buscar, pero finalmente pude encontrar una solución usando promesas, prometiendo setTimeout.

Encontré la solución en este hilo: promesa de JavaScript ES6 para bucle

 const delay = ms => new Promise(resolve => setTimeout(resolve, ms)); for (let i = 0, p = Promise.resolve(); i < myArray.length; i++) { const element = myArray[i]; const celdaClick = () => primeraCelda.click(); const addtoListClick = () => addToList.click(); p = p .then(() => delay(1000, (search.value = element))) .then(() => delay(1000, search.dispatchEvent(ev))) .then(() => console.log(i)) .then(() => delay(1500, celdaClick())) .then(() => delay(1500, addtoListClick())); }
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda