Estoy tratando de automatizar mi caso de prueba en Cypress. Tengo un campo de entrada de texto, es decir, ID de cliente. Después de insertar la identificación del cliente, otros campos, como el nombre del cliente, la dirección, el teléfono, etc., aparecerán automáticamente si el cliente existe en la base de datos. El ID de cliente que estoy usando existe en la base de datos y funciona bien cuando inserto el ID manualmente. Pero cuando ejecuto el script de Cypress no lo hace.
Aquí está mi código:
it ('Customer information', () => { cy.get('#ID').click().type('1234567') })Incluso he intentado con 'enter' pero no funciona. ¿Hay alguna idea o alguna alternativa para insertar un valor que vuelva a cargar los otros campos?
La aplicación está diseñada para buscar al cliente por la identificación que se ingresó, lo que significa que hay un controlador de eventos configurado para hacer esto.
Desde type#Events-that-fire , estos eventos se activan automáticamente
Los siguientes eventos se activarán en función de qué tecla se presionó idéntica a la especificación del evento:
- pulsación de tecla
- pulsación de tecla
- antes de la entrada
- entrada de texto
- aporte
- tecla Arriba
Además, como probó cy.get('#ID').type('1234567{enter}') , también se envía el evento de change
Además, los eventos de cambio se activarán cuando se presione la tecla {enter}
Intenta difuminar la entrada
La prueba debe imitar las acciones que realiza un usuario, pero es posible que {enter} no active la respuesta. Prueba cy.get('#ID').type('1234567').blur()
Comprobación de detectores de eventos
Eche un vistazo a la pestaña Elementos/Oyentes de eventos en devtools para ver qué eventos están configurados en el elemento.
Utilice .trigger() para activar los eventos que se enumeran. Incluso si son uno de los anteriores, intente dispararlos después del .type() ya que puede haber un problema de tiempo.
Comprobar para buscar
Eche un vistazo a la pestaña Red de devtools para ver si se activa una búsqueda. El comando .type() puede estar funcionando, pero falla la obtención de datos del cliente.
Cambiar a cypress-real-events
Agregue el paquetecypress-real-events y use
cy.get('#ID').focus() cy.realtype('1234567{enter}') cy.get('#ID').trigger(...) // events found in devtoolso
cy.get('#ID').focus() cy.realtype('1234567').blur() cy.get('#ID').trigger(...) // events found in devtoolsPuedes probar estos:
cy.get('#ID').type('1234567', {force: true}) cy.get('#ID').type('1234567').trigger('change')