Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

193
Vistas
¿Cómo pasar el contenido producido en cy.wait() a la variable y reutilizarlo en los siguientes pasos?

Uso cy.intercept() y cy.wait() para escuchar la solicitud y obtener contenido de ella.

 let number; describe("some test", () => { before(() => { cy.clearCookies(); }); it("some test", () => { cy.someCommand(); clientPage.someMethod(); cy.intercept("**/request").as("idNumber"); clientPage.someMethod1(); cy.wait("@idNumber").then((res) => { number = res.response.body.numbers.id }); cy.get(#someELement).type(number) }); });

Me da "cy.type () solo puede aceptar una cadena o un número. Pasaste: indefinido" Cuando intento registrar cy.log (número) en "número = res.response.body.numbers.id" funciona . Cuando trato de pasar la variable fuera de este bloque de código, no está definida. ¿Cómo puedo pasarlo a los pasos posteriores?

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Para asegurarse de que el valor de número se transmita al type , debe agregar un then , algo como:

 let number describe('some test', () => { before(() => { cy.clearCookies() }) it('some test', () => { cy.someCommand() clientPage.someMethod() cy.intercept('**/request').as('idNumber') clientPage.someMethod1() cy.wait('@idNumber') .then((res) => { number = res.response.body.numbers.id }) .then(() => { cy.get('#someELement').type(number) }) }) })

Si desea usar la variable globalmente en todo el proyecto, puede usar el método Cypress.env() . Documentos de Cypress .

 describe('some test', () => { before(() => { cy.clearCookies() }) it('some test', () => { cy.someCommand() clientPage.someMethod() cy.intercept('**/request').as('idNumber') clientPage.someMethod1() cy.wait('@idNumber').then((res) => { cypress.env('number', res.response.body.numbers.id) //Sets Number }) cy.get('#someELement').type(Cypress.env('number')) //Gets Number and types it }) it('some different test', () => { cy.get('#someELement').type(Cypress.env('number')) //types the number }) })
about 4 years ago · Juan Pablo Isaza Denunciar

0

Ocurre debido a la naturaleza asincrónica de cypress, y en el momento en que se llama number , su valor aún no estaba asignado. Cualquier otra acción se puede encadenar mediante el comando de wait sin contaminar su alcance con variables de contexto:

 cy.wait("@idNumber").then((res) => { cy.get(#someELement).type(res.response.body.numbers.id) });
about 4 years ago · Juan Pablo Isaza Denunciar

0

La respuesta de @ alex-izbas es buena si necesita un uso inmediato.

En la opción de que necesite usarlo más adelante en su prueba, deberá configurarlo como .alias() y usarlo junto con function(){} y this palabra clave.

 describe("some test", () => { before(() => { cy.clearCookies(); }); // use function() {} to be able to use this keyword it("some test", function() { cy.someCommand(); clientPage.someMethod(); cy.intercept("**/request").as("idNumber"); clientPage.someMethod1(); // use .its() to get the id and store in alias cy.wait("@idNumber") .its('response.body.numbers.id') .as('number') // some more actions // get alias using this keyword cy.get(#someELement).type(this.number) }); });
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda