Cómo obtener el valor del campo de entrada de texto en una const y registrar ese valor en Cypress.io

4 minutos de lectura

Cómo obtener el valor del campo de entrada de texto en una variable ‘const’ en Cypress, para poder registrar esa variable usando cy.log(). El siguiente código no registra nada, ¿alguien familiarizado con Cypress.io puede avisar?

cy.get('input[name="email"]').then(($text)=>{
        const txt = $text.text()
        cy.log(txt)

    })

avatar de usuario de soccerway
camino del fútbol

Usando invoke('val') en lugar de invoke('text') funcionó para mi caso.

Recordatorio de la etiqueta html

<input type="text" class="form-control" name="email">

código de ciprés

cy.get('input[name="email"]')
  .invoke('val')
  .then(sometext => cy.log(sometext));

  • .invoke(‘val’) es mágico! Intenté durante horas obtener el valor del campo de texto v. ¡¡gracias!!

    – krankuba

    4 de febrero de 2021 a las 13:40


Solución oficial de ciprés ¿Cómo obtengo el valor de una entrada? sugiere algo como este código a continuación:

cy.get('input[name="email"]').should('have.value', val)

  • No es exactamente lo que se preguntó, pero es útil para otros casos.

    – Haroldo_OK

    24 de junio de 2021 a las 12:46


  • después de usar .type() esto a veces (solo sucede en CI) tiene un valor incorrecto por alguna razón, la mayoría de las veces solo falta 1 LETRA. ¿algunas ideas?

    – trenoasis

    8 dic 2022 a las 13:56

  • @trainoasis intenta ajustar la velocidad de escritura

    – chris

    18 de enero a las 12:27

Avatar de usuario de Brendan
Brendan

De https://github.com/cypress-io/cypress/issues/630

Deberías poder hacer:

cy
  .get('input[name="email"]')
  .invoke('text')  // for input or textarea, .invoke('val')
  .then(text => {
    const someText = text;
    cy.log(someText);
  });

Esto está funcionando para mí en una prueba en el siguiente elemento:

<span class="abProgress" style="width: 0%;">100%</span>

  • Lo intenté, ahora arroja un error ‘cypress_runner.js: 141304 TypeError: $ el.invoke is not a function at Context.

    – camino del fútbol

    10 de agosto de 2018 a las 20:53

  • Lo siento, me salí de la memoria y no era correcto. Actualicé la respuesta con un código directamente de una prueba de trabajo mía (pero puse su selector en su lugar). Descubrí que esto es un poco quisquilloso cuando lo estaba resolviendo y algunos tipos de elementos no funcionaron con esto, así que espero que funcione para usted.

    – Brendan

    10 de agosto de 2018 a las 21:17


  • Aún no tuve suerte, lo intenté de la siguiente manera, pero el registro no está registrando el valor ingresado en el campo de texto ‘cy.get (‘input[name=”email”]’).invoke(‘texto’).then(texto=>{ const algúntexto = texto; cy.log(algúntexto); })’

    – camino del fútbol

    10/08/2018 a las 22:50


  • @ Brendan, finalmente lo descubrí, en lugar de invocar (‘texto’), usó invocar (‘val’). Ahora Cypress está registrando el valor de la variable… ‘cy .get(‘input[name=”email”]’).invoke(‘val’).then(val => { const algúntexto = val; cy.log(algúntexto); })’

    – camino del fútbol

    13 de agosto de 2018 a las 9:12


  • @soccerway es bueno saberlo, ¿cómo se veía el elemento con el que funcionó?

    – Brendan

    13 de agosto de 2018 a las 14:58

Si desea masajear o trabajar con el texto antes de una afirmación:

cy.get('input').should(($input) => {
  const val = $input.val()
})

usando-cypress-faq

.contains(‘tu-valor’) trabajó para mi

  • Un enlace a una solución es bienvenido, pero asegúrese de que su respuesta sea útil sin él: agregar contexto alrededor del enlace para que sus compañeros usuarios tengan una idea de qué es y por qué está allí, luego cite la parte más relevante de la página a la que está enlazando en caso de que la página de destino no esté disponible. Las respuestas que son poco más que un enlace pueden eliminarse.

    – Yunnosch

    10 de marzo de 2020 a las 11:02

  • Un enlace a una solución es bienvenido, pero asegúrese de que su respuesta sea útil sin él: agregar contexto alrededor del enlace para que sus compañeros usuarios tengan una idea de qué es y por qué está allí, luego cite la parte más relevante de la página a la que está enlazando en caso de que la página de destino no esté disponible. Las respuestas que son poco más que un enlace pueden eliminarse.

    – Yunnosch

    10 de marzo de 2020 a las 11:02

¿Ha sido útil esta solución?