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.

¿Cómo puedo hacer clic en un botón dentro del mismo elemento con un nombre específico?

Este es un proyecto ant-react.

html:

name 1

name 2

/js:

cy.get(div:contains('name1'))
.should(‘be.visible’)
.invoke(‘show’)
.should(‘be.visible’)
.find(‘button:contains(“Done”)’).eq(0).click({ multiple: true })

Hay muchos elementos item. Necesito hacer clic en el botón ‘Done’ del elemento con nombre “name 1”. Pero cada vez que obtengo un error:

Timed out retrying after 4050ms: cy.click() failed because this element is detached from the DOM.

Cypress requiere que los elementos estén adjuntos en el DOM para interactuar con ellos.

¿Cómo puedo hacerlo?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Este mensaje de error indica que el elemento con el que intentas interactuar no está presente actualmente en el DOM. Puede haber sido eliminado o ocultado dinámicamente, o podría haber un retraso en su carga.

    Para resolver este problema, es posible que necesites esperar a que el elemento se vuelva visible y se cargue por completo antes de intentar interactuar con él. Puedes usar comandos de Cypress como cy.wait () ocy.get () con una opción de timeout para especificar el tiempo que debes esperar a que aparezca el elemento.

    Además, puedes intentar usar el comando contains () con la opción force para obligar a Cypress a buscar el elemento incluso si está desvinculado del DOM.

    Aquí hay un ejemplo de cómo podrías modificar tu código para hacer clic en el botón “Done” del elemento “name 1”:

    cy.contains('span', 'name 1')
      .should('be.visible')
      .click()
    cy.contains('button', 'Done')
      .should('be.visible')
      .click()
    

    Este código primero busca el elemento span que contiene el texto “name 1”, luego hace clic en él. Esto debería llevar el elemento a la vista y permitir que se interactúe con él. Luego, busca el elemento button que contiene el texto “Done” y también hace clic en él. Las afirmaciones should('be.visible') aseguran que los elementos estén completamente cargados y visibles antes de intentar interactuar con ellos.

Comments are closed.