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

148
Vistas
Obtener el identificador del elemento dentro de la tabla usando titiritero

ingrese la descripción de la imagen aquí

Estoy trabajando con titiritero. Tengo una tabla como en la captura de pantalla. Necesito poder hacer clic en el botón debajo de la acción en una fila después de seleccionar la fila según la columna de nombre a la izquierda.

Basado en selector html usando predicado de predicado

Tengo:

 const parent = await page.$eval('td[title="18to22"]', el => el?.parentElement?.outerHTML)

Esto funciona y proporciona el html para el elemento principal, pero quiero obtener el identificador del elemento principal ( https://puppeteer.github.io/puppeteer/docs/next/puppeteer.elementhandle/ ) y luego el último identificador del elemento secundario que debe contener el botón de vista en el que se puede hacer clic.

Lo intenté:

 const parent = await targetPage.$$eval( 'td[title="18to22"]', (el) => el?.parentElement );

Esto produce indefinido.

¿Cómo puedo obtener el control del elemento principal y, en última instancia, del elemento secundario?

about 4 years ago · Santiago Gelvez
1 Respuestas
Responde la pregunta

0

Creo que no puede volver a convertir el elemento ya evaluado a ElementHandle.

Haría lo siguiente para lograr lo que necesitas:

  • obtener el contenido de las filas con page.$$eval (devuelve una matriz de cadenas)
  • obtenga el índice de la fila que contiene el nombre deseado ('18to22') usando Array.findIndex()
  • ahora que conoce el índice, necesita incrementarlo con un número (ya que la pseudoclase nth-child() de CSS usa números que comienzan desde 1, y no desde 0 como las matrices JS regulares)
  • para que pueda usar el siguiente selector de CSS para obtener la fila exacta: tbody > tr:nth-child(${wantedRowIndex + 1})
  • ... la quinta columna contiene el botón: > td:nth-child(5)
  • ... el botón me parece un elemento <a> , por lo que puede agregar > a a al final del selector para apuntar al enlace en el que desea hacer clic
  • finalmente puede aplicar HTMLElement.click() en la función de página de page.$eval

Ejemplo:

 const rows = await page.$$eval('tbody > tr', elems => elems.map(el => el.innerText)) const wantedRowIndex = rows.findIndex(el => el.includes('18to22')) await page.$eval(`tbody > tr:nth-child(${wantedRowIndex + 1}) > td:nth-child(5) > a`, el => el.click())
about 4 years ago · Santiago Gelvez 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