Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

205
Vistas
cómo devolver un valor desde un comando personalizado en cypress

Hola amigos, soy nuevo en la automatización de ui/cypress. Estoy tratando de crear un comando personalizado que lea datos de ui y los devuelva al comando de llamada donde puedo compararlos con datos de prueba y validar el resultado, por ejemplo. ingrese la descripción de la imagen aquí

para el comando personalizado en support\commands.js continuación está mi código que toma el nombre de la companyname como parámetro y lee la contact info de ui

 Cypress.Commands.add('readContactInfo', (companyName) => { cy.get('.simple-table__cell:nth-child(1)').contains(companyName).parent().within(function() { cy.get('div').eq(2).then(function(res) { cy.log(res.text()) }) }) })

y cuando lo llamo desde el archivo test.spec.js como a continuación

 cy.readContactInfo('Magazzini Alimentari Riuniti')

la salida es como

 log Giovanni Rovelli

pero quería que readContactInfo devolviera el text value al comando cypress como lo hace la función normal ...

lo que intenté

 Cypress.Commands.add('readContactInfo', (companyName) => { cy.get('.simple-table__cell:nth-child(1)').contains(companyName).parent().within(function() { cy.get('div').eq(2).then(function(res) { return cy.wrap(res.text()) }) }) })

y cuando lo llamo desde el archivo test.spec.js como a continuación

 cy.readContactInfo('Magazzini Alimentari Riuniti').then(text)=>{ cy.log(text); }

la salida es como

 8 get .simple-table__cell:nth-child(1) 9 -contain Magazzini Alimentari Riuniti 10 -parent 11 -within 12 get div 13 -eq 2 14 wrap Giovanni Rovelli l5 log <li.simple-table__row>
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Tendrás que devolver toda la cadena de mando del sujeto que quieras devolver.

 Cypress.Commands.add('readContactInfo', (companyName) => { return cy.get('.simple-table__cell:nth-child(1)') .contains(companyName) .parent() // find command limited to previous subject .find('div') .eq(2) // will invoke .text() and return it .invoke('text') })

Ahora, siempre que use el comando personalizado, se devolverá el texto.

 cy.readContactInfo('Magazzini Alimentari Riuniti') .should('eq', 'text you want to verify here')
about 4 years ago · Juan Pablo Isaza Denunciar

0

Está en el camino correcto, pero tenga en cuenta que no necesita devolver nada, el cy.wrap() es suficiente (Cypress establece su res.text() como el asunto actual).

El problema es que .within() siempre restablece el tema, y dado que envuelve el tema que desea, tiene la última palabra, por así decirlo.

Reemplácelo con .find()

 Cypress.Commands.add("readContactInfo", (companyName) => { cy.get(".simple-table__cell:nth-child(1)") .contains(companyName) .parent() .find("div") .eq(2) .then(function (res) { return cy.wrap(res.text()); }); });

También puede acortar el res.text()

 Cypress.Commands.add("readContactInfo", (companyName) => { cy.get(".simple-table__cell:nth-child(1)") .contains(companyName) .parent() .find("div") .eq(2) .invoke('text') });

Ref .dentro()

rendimientos

.within() produce el mismo asunto que se le dio en el comando anterior.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda