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

457
Visualizações
¿Cómo hago que el titiritero seleccione el cuadro de texto del traductor de Google para mí? solo funciona si hago clic yo mismo

mi codigo es el siguiente

 await page.waitForTimeout(1000); await page.waitForSelector( "#yDmH0d > c-wiz > div > div.WFnNle > c-wiz > div.OlSOob > c-wiz > div.ccvoYb.EjH7wc > div.AxqVh > div.OPPzxe > c-wiz.rm1UF.UnxENd.u3bW4e > span > span > div > textarea" ); let sourceString = "ni hao ma"; await page.type( "#yDmH0d > c-wiz > div > div.WFnNle > c-wiz > div.OlSOob > c-wiz > div.ccvoYb.EjH7wc > div.AxqVh > div.OPPzxe > c-wiz.rm1UF.UnxENd.u3bW4e > span > span > div > textarea", sourceString ); await page.waitForTimeout(5000); await page.waitForSelector( "#yDmH0d > c-wiz > div > div.WFnNle > c-wiz > div.OlSOob > c-wiz > div.ccvoYb.EjH7wc > div.AxqVh > div.OPPzxe > c-wiz.P6w8m > div.tm8pq" ); const [val1] = await page.$x( '//*[@id="yDmH0d"]/c-wiz/div/div[2]/c-wiz/div[2]/c-wiz/div[1]/div[2]/div[3]/c-wiz[2]/div[7]/div/div[1]/span[1]/span/span' ); const txtval1 = await val1.getProperty("textContent"); const rawtxtval1 = await txtval1.jsonValue(); console.log(rattxtval1);

este código abre Google Translate, escribe algún texto, en este caso "ni hao ma" y devuelve la traducción del mismo. Todo esto funciona perfectamente, pero solo si hago clic en el primer cuadro yo mismo. Por alguna razón, no puedo hacer que ingrese el texto sin hacer clic en el cuadro. Intenté llamar a page.click() en el cuadro con la misma etiqueta, y dice que el nodo no existe como se muestra en el siguiente error

 Error: No node found for selector: #yDmH0d > c-wiz > div > div.WFnNle > c-wiz > div.OlSOob > c-wiz > div.ccvoYb.EjH7wc > div.AxqVh > div.OPPzxe > c-wiz.rm1UF.UnxENd.u3bW4e > span > span > div > textarea

sin embargo, cuando hago clic en él mismo mientras se ejecuta el programa, luego escribe en el cuadro perfectamente (usando exactamente la misma etiqueta para encontrar en qué cuadro escribir) y recupera el texto en el otro cuadro también.

¿Estoy usando la función incorrecta o me estoy perdiendo por completo un paso de lo que está pasando?

Cualquier ayuda muy apreciada.

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Este enfoque parece demasiado complicado. En primer lugar, por lo general se deben evitar los selectores hiperespecíficos generados por el navegador. Es demasiado fácil para JS deslizar un nuevo elemento en la cadena inesperadamente o cambiar una sola clase o identificación y todo se desmorona.

En segundo lugar, waitForTimeout es casi siempre un enfoque deficiente, como advierte el archivo Léame de Puppeteer. Apéguese a una estrategia basada en eventos usando waitForSelector y waitForFunction tanto como sea posible para evitar condiciones de carrera y secuencias de comandos lentas.

 const puppeteer = require("puppeteer"); // ^13.5.1 let browser; (async () => { browser = await puppeteer.launch({headless: true}); const [page] = await browser.pages(); await page.goto("https://translate.google.com"); await page.type(".er8xn", "ni hao ma"); await page.waitForSelector(".Q4iAWc"); const phrases = await page.$$eval(".Q4iAWc", els => els.map(e => e.textContent)); console.log(phrases.join(" ")); // => How are you })() .catch(err => console.error(err)) .finally(() => browser?.close()) ;

Esto se puede optimizar aún más navegando directamente a https://translate.google.com/?sl=auto&tl=en&text=ni%20hao%20ma&op=translate para evitar seleccionar y manipular el área de texto por completo. La navegación directa es más rápida y robusta, ya que no necesita conectarse a ninguna clase o ID de DOM. Solo tenga cuidado de codificar su cadena de consulta correctamente.

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