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]) }) })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 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.
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]) })