Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

191
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda