es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El gatillo de Cypress no mantiene pulsado el clic dos veces en el mismo bucle cada vez.

Estoy tratando de eliminar un registro que está dentro de un bucle “each”. Se elimina la primera vez que se ejecuta cada bucle, pero la segunda vez, simplemente hace clic pero no lo mantiene.

cy.get('pc-fonts-manager-list').then(($fontsList) => {

      cy.get('pc-fonts-family-list-item').each(listItem =>{
      cy.get('[data-at=fontName]').first().invoke('text').then($fontName =>{
      cy.get('[data-at=removeFontBtn]').first().click();
      cy.holdToDeleteFontFamily('[data-at=fontFamilyConfirmRemoveBtn]');
      cy.wait('@deleteFamily');
      cy.assertSnackbarMessage(' La familia de fuentes \''+$fontName+'\' ha sido eliminada ');

Este es el fragmento para hacer clic y mantener presionado el botón (funciona en la primera iteración):

Cypress.Commands.add('holdToDeleteFontFamily', (element) =>{
      cy.get(element).focus().trigger('keydown', {key: 'Enter'})
    });

No estoy seguro si puede ser algo relacionado con trigger(), porque también intenté el enfoque de ‘mouseclick’ y tampoco ha funcionado.

Fragmento de HTML:

<div class="c-alert__buttons"><button _ngcontent-cvf-c367="" ip-btn-regular-tertiary="" size="small" data-at="fontFamilyCancelRemoveBtn" class="c-btn c-btn--regular-tertiary c-btn--regular-tertiary-small c-btn--regular-tertiary-danger" ng-reflect-size="small">cancel </button><button _ngcontent-cvf-c367="" ip-btn-regular-secondary="" ip-btn-click-and-hold="" size="small" data-at="fontFamilyConfirmRemoveBtn" class="c-btn c-btn--regular-secondary c-btn--regular-secondary-small c-btn--click-and-hold c-btn--regular-secondary-danger" ng-reflect-size="small">confirm </button></div>

¡Gracias por tu ayuda!

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que la función trigger() no está funcionando como se espera al intentar mantener presionado el botón. Puede intentar usar el evento mousedown en su lugar, lo cual debería simular mantener presionado el botón.

    Puede reemplazar la función actual holdToDeleteFontFamily() con esta versión actualizada:

    Cypress.Commands.add('holdToDeleteFontFamily', (element) => {
      cy.get(element).focus().trigger('mousedown').wait(1000).trigger('mouseup')
    });
    

    Esto simulará hacer clic y mantener presionado el botón durante 1 segundo antes de soltarlo.

    Alternativamente, puede intentar usar la función trigger() con la opción which establecida en 1 para simular hacer clic y mantener presionado el botón izquierdo del mouse:

    Cypress.Commands.add('holdToDeleteFontFamily', (element) => {
      cy.get(element).focus().trigger('mousedown', { which: 1 })
        .wait(1000).trigger('mouseup', { which: 1 })
    });
    

    Esto también simulará mantener presionado el botón durante 1 segundo antes de soltarlo.

    Esperamos que una de estas enfoques funcione para usted y le permita eliminar registros dentro del bucle each.

Comments are closed.