Puedo verificar que el texto aparece "en algún lugar" en la página de resultados con

it.only('can verify an input element has certain text typed into it', function() {
  cy.visit('http://google.com')
  cy.get("input[name=q]").type('abc123{enter}')  // with or without the {enter}
  cy.contains('abc123') // Anywhere on the page :(
})  

Pero, ¿cómo puedo verificar el texto que escribo en el cuadro de texto de entrada ?

Traté de encadenar al elemento con

it.only('can verify an input element has certain text typed into it', function() {
  cy.visit('http://google.com')
  cy.get("input[name=q]").type('abc123{enter}')
  cy.get("input[name=q]").contains('abc123')
})  

Pero consigo

CypressError: Timed out retrying: Expected to find content: 'abc123' within the element: <input.gLFyf.gsfi> but never did.

Intenté cy.get("input[name=q]").contains('abc123') y
cy.contains('input[name=q]', 'abc123')
pero tanto el tiempo de espera como el fracaso.

0
Michael Durrant 19 feb. 2020 a las 00:27

2 respuestas

La mejor respuesta

Cambiar .contains para usar .should('have.value'...

cy.get("input[name=q]").type('abc123{enter}')
cy.get("input[name=q]").should('have.value', 'abc123')
1
Michael Durrant 25 feb. 2020 a las 15:31

Puede que no le guste esta idea, pero aquí hay solo una sugerencia para que no tenga que seguir llamando a cy.get cada vez.

Siempre puede establecer un valor constante para su nombre de entrada (podría estar en un archivo externo) así que:

export const inputField = () => cy.get('input[name=q]');

Esto lo conseguirá cada vez que llame a inputField.

Entonces su llamada sería:

inputField.type('abc123{enter}').should('have.value', 'abc123');

Eso es más una cuestión de configuración que una solución real, ya que sé que resolvió el problema usted mismo, pero lo anterior es una buena manera para que no tenga que seguir haciendo cy.get en el mismo campo.

0
mvoase 20 feb. 2020 a las 18:40