Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

184
Visualizações
Condición de parada de bucle foreach de Cypress

Necesito ayuda con el siguiente bucle:

 localStorage.removeItem('DDFound'); cy.get(sel).each(($el, index, $list) => { if(localStorage.getItem('DDFound')!='1') { cy.log(localStorage.getItem('DDFound')); cy.wrap($el).click().then(()=> { cy.get(table).then(elx => { if(elx.find(tableitem).length > 0) { cy.get(tableitem).click(); cy.get(lable).should('contain.text',"Item") localStorage.setItem('DDFound','1'); } }) }); } });

Me gustaría romper justo después de encontrar el elemento correcto (tableitem) y para eso, estoy configurando un almacenamiento local (no encontré ninguna otra manera) pero parece que Cypress ejecuta todos los elementos en cada ciclo en paralelo y no llega a el if(localStorage.getItem('DDFound')!='1') después de cada elemento.

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Si tiene un código complejo dentro de .each() , debe envolverlo en una promesa

 let found = false; cy.get(sel).each(($el, index, $list) => { if (found) return false; // early exit return new Cypress.Promise(resolve => { cy.wrap($el).click().then(() => { cy.get(table).then(elx => { if (elx.find(tableitem).length > 0) { cy.get(tableitem).click(); cy.get(label).should('contain.text',"Item") found = true; } resolve() // wait for above to complete }) }) }) })

Ver .each() - Promesas

Se esperan promesas

Si su función de devolución de llamada devuelve una Promesa, se esperará antes de iterar sobre el siguiente elemento de la colección.

about 4 years ago · Juan Pablo Isaza Relatório

0

Puede detener el bucle .each() antes devolviendo falso en la función de devolución de llamada. En su caso, podemos devolver el valor si DDItem no es igual a uno.

 localStorage.removeItem('DDFound'); cy.get(sel).each(($el, index, $list) => { if(localStorage.getItem('DDFound')!='1') { cy.log(localStorage.getItem('DDFound')); cy.wrap($el).click().then(()=> { cy.get(table).then(elx => { if(elx.find(tableitem).length > 0) { cy.get(tableitem).click(); cy.get(lable).should('contain.text',"Item") localStorage.setItem('DDFound','1'); } }) }); } return localStorage.getItem('DDFound') !== 1 });
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda