Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

398
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!