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

188
Vistas
¿Cómo tener selectores reutilizables con la clase Cypress pageObject?

Estoy tratando de usar un objeto de página en Cypress, quiero tener mis selectores en el mismo archivo para poder reutilizarlos en múltiples funciones y solo necesito cambiarlos en un lugar si necesitan actualizarse.

Aquí hay un ejemplo simple:

 class HomePage { searchLink = "a[class='search button']"; clickSearchLink() { cy.get(this.searchLink).click(); } } export const homePage = new HomePage();

Esto funciona bien, mi prueba puede llamar a las funciones, por ejemplo, homePage.clickSearchLink() pero tengo dos problemas:

  1. Cuando ejecuto eslint falla con

e2e/page-objects/home-page.js 2:14 error Error de análisis: Token inesperado =

  1. Hacerlo de esta manera significa que searchLink está disponible en mis archivos de especificaciones, quiero que solo se vea en esta clase. Intenté configurar searchLink en let o var, pero eso lo hizo inutilizable en la función clickSearchLink().

¿Es posible tener mis selectores en esta clase y aún así pasar la pelusa?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Si cambia el objetivo de TypeScript a es6/es2015, puede usar campos privados.

Características de la clase privada

Características de la clase privada

Los campos de clase son públicos de forma predeterminada, pero los miembros de clase privada se pueden crear utilizando un prefijo hash #. El propio JavaScript impone la encapsulación de privacidad de estas características de clase.

Para el error ESLint, agregue un constructor.

 class HomePage { #searchLink: string; constructor() { this.#searchLink = "a[class='search button']"; } clickSearchLink() { cy.get(this.#searchLink).click(); } } export const homePage = new HomePage();

/cypress/tsconfig.json

 { "extends": "../tsconfig.json", "compilerOptions": { "target": "es6", ... }, "include": ["**/*.ts"] }
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