es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo hacer clic en texto en Puppeteer?

¿Existe algún método (no encontrado en la API) o solución para hacer clic en un elemento con texto?

Por ejemplo, tengo el siguiente HTML:

<div class="_5THWM1">flex
    <span class="_2i7N3j">Sort By</span>
    <div class="_10UF8M 3LsR0e">Relevance</div>
    <div class="_10UF8M">Popularity</div>
    <div class="_10UF8M">Precio -- Bajo a Alto</div>
    <div class="_10UF8M">Precio -- Alto a Bajo</div>
    <div class="_10UF8M">Más Recientes</div>
</div>

Quiero hacer clic en “Precio — Bajo a Alto” pero con las mismas clases no sé cómo hacer clic y no sé cómo hacer clic en el texto. ¿Alguien puede ayudarme por favor?

Estoy utilizando Puppeteer, por favor escriba el código para esto.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Sí, hay una solución para hacer clic en un elemento con texto en Puppeteer. Puedes usar el método page.evaluate() para obtener el elemento con el texto correspondiente y luego hacer clic en él usando element.click(). Aquí tienes un ejemplo:

    const puppeteer = require('puppeteer');
    
    (async () => {
      const browser = await puppeteer.launch();
      const page = await browser.newPage();
    
      await page.goto('https://example.com');
    
      // Busca y haz clic en un elemento con el texto "Price -- Low to High"
      const element = await page.evaluate(() => {
        const elements = Array.from(document.querySelectorAll('div._10UF8M'));
        return elements.find(el => el.textContent === 'Price -- Low to High');
      });
    
      if (element) {
        await element.click();
        console.log('Elemento clicado con éxito');
      } else {
        console.log('Elemento no encontrado');
      }
    
      await browser.close();
    })();
    

    En este ejemplo, usamos page.evaluate() para obtener una lista de todos los elementos con la clase _10UF8M. Luego, usamos el método Array.find() para encontrar el elemento que tiene el contenido de texto “Price — Low to High”. Si se encuentra el elemento, hacemos clic en él con element.click().

    Ten en cuenta que para poder usar page.evaluate(), necesitamos estar dentro de un contexto de browser.newPage(). Además, es posible que debas ajustar los selectores en el método document.querySelectorAll() para que se adapten a tu caso de uso específico.

    ¡Espero que esto te haya ayudado!

Comments are closed.