Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

448
Visualizações
Cómo seleccionar elementos del menú desplegable en la página web con Titiritero

Estoy tratando de aprender JavaScript y tratando de seleccionar el menú desplegable Ordenar y hacer clic en uno de sus cuatro elementos en este sitio web: https://www.centris.ca/en/properties~for-sale?view=Thumbnail

Pero sigo no node found for selector .

Este es mi código:

 const puppeteer = require('puppeteer') function run () { return new Promise(async (resolve, reject) => { try { const browser = await puppeteer.launch({headless: false}) const page = await browser.newPage() await page.goto("https://www.centris.ca/") await page.$eval('i.far.fa-search', el => el.click()) await page.select("select#selectSortById", "3") //browser.close() return resolve(page) } catch (e) { return reject(e) } }) } run().then(console.log).catch(console.error)
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

El código que está utilizando es para manipular elementos HTML <select> y <option> . Pero la estructura que está viendo son solo algunos <a> s en un <div> que tienen estilo y tienen JS que los hace comportarse como un menú desplegable, pero en realidad no son menús desplegables en lo que respecta a Titiritero, probablemente explicando por qué tu código no funciona.

Simplemente seleccionaría el <a> (actuando como una "opción") que desea, luego haría clic en él ( usando el click nativo para evitar la rareza de la visibilidad ). waitForFunction una función de espera para detectar cuándo se aplicó realmente el filtro, pero es posible que eso no sea lo que quieras hacer a continuación. Aun así, ayuda a verificar que esto funcione antes de descargar la captura de pantalla.

También configuré un agente de usuario para que funcione el modo sin cabeza, si lo desea.

 const puppeteer = require("puppeteer"); // ^13.0.1 let browser; (async () => { browser = await puppeteer.launch({headless: true}); const [page] = await browser.pages(); await page.setUserAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36"); await page.goto("https://www.centris.ca/en/properties~for-sale"); const recent = await page.waitForSelector('#selectSortById [data-option-value="3"]'); await recent.evaluate(el => el.click()); // assume the whole first page are new listings and assume a few classes exist await page.waitForFunction(` document.querySelectorAll(".banner.new-property").length === document.querySelectorAll(".property-thumbnail-item").length `); await page.screenshot({path: "result.png"}); })() .catch(err => console.error(err)) .finally(() => browser?.close()) ;

No está relacionado con la tarea de raspado, pero vale la pena echarle un vistazo para mejorar su código JS: ¿Qué es el antipatrón de construcción de promesa explícita y cómo lo evito?

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda