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

131
Visualizações
Cómo dejar que Cypress contenga retorno booleano en lugar de fallar la prueba

Estoy probando una lista desplegable virtual, mi código es así:

 while (!cy.contains('.ant-select-item',/^Cypress$/)) { cy.get('.ant-select-dropdown').trigger('wheel', {deltaX:0,deltaY:100}); }

Sigue girando hacia abajo hasta que encuentra un elemento específico. Sin embargo, este código no funciona, cuando contains no encuentra el elemento específico, falla la prueba en lugar de devolver falso.
¿Cómo hacer que el ciclo while funcione?

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

0

Puede usar jQuery, Cypress.$ en su lugar.

 while (!Cypress.$('.ant-select-item:contains('Cypress').length) { cy.get('.ant-select-dropdown').trigger('wheel', {deltaX:0,deltaY:100}); }

Una cosa: :contains() coincidirá parcialmente, por lo que esto no es bueno si más de un elemento tiene la cadena.

Versión larga - Cypress.$('.ant-select-item:contains('Cypress') obtiene una lista de elementos coincidentes. Si no encuentra ninguno, no falla, pero la longitud de la lista es 0. Dado que 0 es falso, el bucle continúa.

La idea del bucle solo es buena si el menú desplegable realmente contiene el valor en alguna parte, de lo contrario, gira para siempre.

about 4 years ago · Juan Pablo Isaza Relatório

0

Si bien los bucles generalmente no funcionan con Cypress, sería más seguro usar una función de repetición (recursiva)

 function findItem(item, loop = 0) { if (loop === 10) throw 'Too many attempts' cy.get('.ant-select-item') .invoke('text') .then(textsOfCurrentList => { if (!textsOfCurrentList.contains(item)) { // wheel down and try next cy.get('.ant-select-dropdown').trigger('wheel', {deltaX:0,deltaY:100}) findItem(item, ++loop) } else { return } }) }) findItem('Cypress')

O con el paquete cypress-recurse

 recurse( () => cy.get('.ant-select-item').invoke('text'), (textsOfCurrentList) => { const found = textsOfCurrentList.contains(item) if (!found) { cy.get('.ant-select-dropdown').trigger('wheel', {deltaX:0,deltaY:100}) } return found // true means finish, false means repeat }, { log: true, limit: 10, // max number of iterations timeout: 30000, // time limit in ms }, )

Una buena información de fondo para evitar bucles en ciprés

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