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

317
Visualizações
¿Cómo pasar localizador como parámetro en ciprés?

Me pregunto si es posible pasar localizadores como parámetro para que mi función sea reutilizable. Traté de hacerlo yo mismo, pero me estoy volviendo "indefinido" en lugar de una prueba de trabajo. Error de Cypress: cy.click() falló porque requiere un elemento DOM. El tema recibido fue:

indefinido

Mi código:

 Cypress.Commands.add( "commandName", (locator, chartValue1) => { const chartValues = [150, 250, 350, 450, 550, 750, 900]; for (const value of chartValues) { locator.click(value, chartValue1).then(() => { mainElementsPage .mainSideBarHeader() .should("not.include.text", "(pon.)") .should("not.include.text", "(wt.)") .should("not.include.text", "(śr.)"); }); } } );

Estoy usando este comando en la prueba:

 it("should do something", () => { cy.commandName(mainElementsPage.chartRect(), 200); });

Contenido de la página de elementos principales:

 class mainElementsPage { chartRect() { return cy.get("#chart-grid-rect"); } } export default mainElementsPage;
about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Parece que quieres hacer un comando secundario .

Lo que precede a su comando personalizado se pasa como subject (equivalente a locator )

 Cypress.Commands.add("commandName", {prevSubject: true}, (subject, chartValue1) => { const chartValues = [150, 250, 350, 450, 550, 750, 900]; for (const value of chartValues) { subject.click(value, chartValue1).then(() => { mainElementsPage.mainSideBarHeader() .should("not.include.text", "(pon.)") .should("not.include.text", "(wt.)") .should("not.include.text", "(śr.)"); }); } } ) cy.get("#chart-grid-rect").commandName(200); // or mainElementsPage.chartRect().commandName(200);
 class MainElementsPage { chartRect() { return cy.get("#chart-grid-rect"); } } export default new MainElementsPage; // note - new keyword here
about 4 years ago · Juan Pablo Isaza Relatório

0

Para asegurarse de que puede usar mainElementsPage , primero debe importar este archivo a su prueba de esta manera:

 import mainElementsPage from '../<some path>/mainElementsPage.js'

Entonces tienes que crear un objeto para esto, como

 const mainElements = new mainElementsPage();

Entonces puedes usarlo como:

 mainElements.chartRect()
about 4 years ago · Juan Pablo Isaza Relatório

0

En Cypress, es imposible tener 2 cadenas de comando activas simultáneamente. Por lo tanto, no puede pasar una cadena de comandos a otro comando (incluido un comando personalizado como lo hace). Así que veo 4 formas diferentes de cómo puede solucionar el problema:

  1. Use una función simple en lugar de un comando personalizado. Entonces podrá pasar una cadena desde su objeto POM.
  2. Devuelva un localizador de cadenas en lugar de una cadena de su objeto POM
  3. Use un comando secundario y encadene su lógica (vea la respuesta de @ Fody).
  4. Pase una referencia de función que apunte a su función de objeto POM y llame a esta función dentro del comando personalizado (vea la respuesta de @wojnarto).
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