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)
})
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
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()
})
.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