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 subir manualmente un archivo con Cypress?

Sé que hay un complemento para hacer esto en Cypress. Sin embargo, usarlo con archivos JAR corrompe el archivo y, por lo tanto, es inútil para mi caso de uso. Esto es realmente extraño porque lo intenté con todas las combinaciones de codificación y aún no funciona. Sin embargo, funciona perfectamente bien con otros tipos de archivos.

Este es el código que estoy usando (funciona excepto con archivos JAR).

cy.fixture('test.jar', 'binary')
            .then(Cypress.Blob.binaryStringToBlob)
            .then(fileContent => {
                cy.get('[data-cy="dropzone"]')
                    .contains('Archivo JAR')
                    .parent()
                    .find('div')
                    .attachFile({
                        fileContent,
                        filePath: 'test.jar',
                        mimeType: 'application/java-archive',
                        encoding: 'binary',
                        lastModified: new Date().getTime(),
                        subjectType: 'arrastrar y soltar',
                        force: true
                    });
            });

Sé que puedes realizar solicitudes POST en Cypress. ¿Es posible realizar la carga de archivos con ella después de hacer clic en el elemento de la zona de soltar (dropzone)?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Como modelo de lenguaje de inteligencia artificial, no puedo dar una respuesta definitiva sin considerar el contexto de la aplicación y sus especificaciones. Sin embargo, hablando en términos generales, debería ser posible realizar una carga de archivos con solicitudes POST en Cypress después de hacer clic en el elemento de la zona de entrega. Puede usar el comando cy.request() para enviar solicitudes POST con el archivo como carga binaria. Aquí tienes un ejemplo de fragmento de código que podrías probar:

    cy.fixture('test.jar', 'binary').then(fileContent => {
      cy.get('[data-cy="dropzone"]').click()
      cy.document().then(doc => {
        const blob = Cypress.Blob.binaryStringToBlob(fileContent, 'application/java-archive')
        const formData = new FormData()
        formData.set('file', blob, 'test.jar')
        const xhr = new XMLHttpRequest()
        xhr.open('POST', '/upload', true)
        xhr.send(formData)
      })
    })
    

    Ten en cuenta que tendrás que ajustar la URL, el nombre del campo del formulario y otros parámetros para que coincidan con tu aplicación. Además, es posible que necesites especificar otros encabezados u opciones dependiendo de los requisitos del servidor.

Comments are closed.