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

333
Visualizações
CYPRESS: error al escribir un valor desde la solicitud de API hasta la entrada

Cuando intento escribir el código OTP (lo obtengo de la API), Cypress muestra un error de captura de pantalla de Cypress

 cy.get('input[data-placeholder="OTP"]').type(getOtpCode(phoneNumber)) 

 function getOtpCode(phone) { var otpCode; cy.request({ method: 'GET', url: 'url' }).then(resp => resp.body) .then(data => data.find(element => element['body']['Message']['Phone'] == phone)) .then(phone => otpCode = phone['body']['Message']['CustomMessage']); return otpCode; }

Si escribí una cadena aleatoria en lugar de getOtpCode(), está funcionando. ¿Sabes cómo resolver ese problema? Gracias por cualquier ayuda :)

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Parece que primero debe realizar getOtpCode() , debido a async cy.request() .

Además, la función debe devolver cy.request() para permitir que .then() se use después.

 function getOtpCode(phone) { return cy.request({ method: 'GET', url: 'url' }) .then(resp => resp.body) .then(data => data.find(element => element['body']['Message']['Phone'] == phone)) .then(phone => phone['body']['Message']['CustomMessage']); } getOtpCode(phoneNumber).then(otpcode => { cy.get('input[data-placeholder="OTP"]').type(otpcode) })

Alternativamente, cambie la función a un comando personalizado. No necesitará devolver nada ya que Cypress establece el asunto actual en el resultado del último .then() en la cadena cy.request() .

El comando personalizado se puede definir globalmente.

ciprés/soporte/comandos.js

 Cypress.Commands.add('getOtpCode', (phone) => { cy.request({ method: 'GET', url: 'url' }) .then(resp => resp.body) .then(data => data.find(element => element['body']['Message']['Phone'] == phone)) .then(phone => phone['body']['Message']['CustomMessage']); })

prueba

 cy.getOtpCode(phoneNumber).then(otpcode => { cy.get('input[data-placeholder="OTP"]').type(otpcode) })
about 4 years ago · Juan Pablo Isaza Relatório

0

Para la función haz esto:

 cy.get('input[data-placeholder="OTP"]') .should('be.visible') .type(getOtpCode(phoneNumber)) function getOtpCode(phone) { var otpCode cy.request({ method: 'GET', url: 'url', }) .then((resp) => resp.body) .then((data) => data.find((element) => element['body']['Message']['Phone'] == phone) ) .then((phone) => (otpCode = phone['body']['Message']['CustomMessage'])) return cy.wrap(otpCode) }

En su archivo de prueba, haga esto:

 import className from '../path-to-js-file.js' //replace className with yours const obj = new className() //replace className with yours describe('Test Suite', () => { it('Test Case', () => { obj.getOtpCode(phone).then((otp) => { cy.get('input[data-placeholder="OTP"]').type(otp) }) }) })
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