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

212
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 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