Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

182
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!