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

227
Views
ciprés: cada iteración sobre una lista y seleccionar la segunda aparición de la lista

Tengo una lista de elementos con los siguientes números; en realidad, es un selector de fechas:

[26,27,28,29,30,31,1,2,3,4,5,6,7,8,9,10,........27,28,29,30,31 ,1,2,3,4] //días del mes

Necesito seleccionar dos fechas como 6 y 27 como rango de fechas. El problema es que hay números duplicados en la lista y cuando comienza la iteración, los primeros 27 seleccionados, no el segundo. Arruina mi prueba porque la primera fecha 27 es del mes anterior. El mes actual comienza a las 1, por lo que debo seleccionar la fecha posterior al 1.

//Comportamiento actual: Mi prueba hace clic en 6 y en la nueva iteración, hace clic en los primeros 27.

Necesito hacer la iteración para verificar los números y omitir la primera aparición y hacer clic en la segunda.

¿Cómo puedo resolver este problema con cada uno? Lo intenté así, pero eq() no funciona.

 let dayVar = 27 .find('.datepicker-row > a').children('span').each(($el, index, list) => { if($el.text() > 25 && index < 10) { cy.wrap($el).should('contain.text', dayVar).eq(1).click() } else { cy.wrap($el).should('contain.text', dayVar).eq(0).click() } })

¡Muchas gracias!

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Como hay dos "27" en el selector, elige el segundo con 'eq(1)`

 let dayVar = '27' // use test here not number cy.get('.datepicker-row > a span') .filter((index, $el) => $el.text() === dayVar) .eq(1) .click();

O más generalmente si puede ser uno O dos de la fecha objetivo

 let dayVar = '27' cy.get('.datepicker-row > a span') .filter((index, $el) => $el.text() === dayVar) .last() // works for one or two "27" .click()

Pero tenga cuidado con las fechas de bajo número y el próximo mes

 let dayVar = '27' if (dayVar > 15) { cy.get('.datepicker-row > a span') .filter((index, $el) => $el.text() === dayVar) .last() .click() } else { cy.get('.datepicker-row > a span') .filter((index, $el) => $el.text() === dayVar) .first() .click() }
about 4 years ago · Juan Pablo Isaza Report

0

Puede eliminar los duplicados de la matriz usando esto:

 let dates = let dates = [ 26, 27, 28, 29, 30, 31, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10....27, 28, 29, 30, 31, 1, 2, 3, 4 ] let uniqueDates = [...new Set(dates)] //uniqueDates are the array for unique dates

Puedes hacer algo como esto. Primero, inserte todas las fechas dentro de una matriz como números. Luego elimina los duplicados. Y luego iterar sobre la matriz y realizar acciones.

 let dates = [] cy.get('selector') .find('.datepicker-row > a') .children('span') .each(($el) => { dates.push(+$ele.text().trim()) }) let uniqueDates = [...new Set(dates)] cy.wrap(uniqueDates).each((num, index) => { if (num > 25 && index < 10) { cy.contains('.datepicker-row > a', num.toString()).eq(1).click() } else { cy.contains('.datepicker-row > a', num.toString()).eq(0).click() } })
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!