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

405
Vistas
Pruebas de Cypress e2e: cómo obtener todos los elementos del menú desplegable dinámico y verificarlos con datos de prueba (más de 200 elementos)

Código HTML de los elementos desplegables

Escribí el código de esta manera, pero solo pude obtener hasta 13 elementos, después de eso no irá a los siguientes elementos. Pude ver los siguientes elementos cuando me desplacé hacia abajo en el menú desplegable y continúa... No estoy seguro de cómo funciona esto, pero creo que se debe al comportamiento de los enlaces en HTML.

Por favor, ¿alguien puede ayudar a obtener todos los elementos o alguna otra forma de probar esto en Cypress?

 cy.visit('https://dev.wholesoftmarket.com/account/signup') cy.get('span.ng-tns-c381-0').contains('Account Name').click() cy.wait(15000) cy.get('p-dropdownitem > li > div').each(($ele, i)=>{ cy.wrap($ele).invoke('text').then((text)=>{ cy.log(text) expect(text).to.equal(accoun_Data.dropdowntext1[i]) }) })
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Es un desplazamiento virtual, por lo que no puede obtener todos los elementos en la primera consulta. Parece que se cargan 13 a la vez.

Si tiene una entrada asociada, es posible que pueda .type() algún texto para filtrar la lista.

Solo necesitaría verificar el primer y el último elemento.

De lo contrario, la lista virtual debe desplazarse para cargar el resto.


Un ejemplo de trabajo de los documentos

Un ejemplo de la primera y última prueba de un cuadro de desplazamiento virtual, utilizando el ejemplo básico de los documentos (100 000 elementos).

Tenga en cuenta que Cypress no espera a que .scrollTo('bottom') complete su acción, por lo que debe aumentar sustancialmente el tiempo de espera al probar el final de la lista.

 cy.get('cdk-virtual-scroll-viewport') .find('.example-item').eq(0) .should('have.text', 'Item #0') cy.get('cdk-virtual-scroll-viewport') .scrollTo('bottom') .find('.example-item', {timeout: 10000}) .should('contain', 'Item #99999')

Su prueba sería similar, pero necesita cambiar el índice final de 999 a lo que sea para sus datos.

 cy.get('cdk-virtual-scroll-viewport') .find('p-dropdownitem > li > div').eq(0) .should('have.text', accoun_Data.dropdowntext1[0]) cy.get('cdk-virtual-scroll-viewport') .scrollTo('bottom') .find('p-dropdownitem > li > div', {timeout: 10000}) .should('contain', accoun_Data.dropdowntext1[999]) // change index

También tenga en cuenta que el segundo uso de should() contain not have.text porque está revisando el texto de los últimos 13 elementos.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Puede acortar el código usando $ele.text() . Y también puede agregar trim() para eliminar los espacios finales.

 cy.get('p-dropdownitem > li > div').each(($ele, i) => { expect($ele.text().trim()).to.equal(accoun_Data.dropdowntext1[i]) })
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