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

959
Visualizações
Titiritero: ¿cómo hacer clic () en un solo botón de una cuadrícula de botones con el mismo nombre de clase?

Estoy desarrollando un Nike SNKRS BOT para comprar zapatillas con Puppeteer y Node.js.

Tengo problemas para distinguir y .click() Captura de pantalla del botón de tamaño de herramientas de desarrollo html y botones frontales

Ese es mi código: no tengo experiencia, así que lo he intentado todo.

 const xpathButton = '//* [@id="root"]/div/div/div[1]/div/div[1]/div[2]/div/section[1]/div[2]/aside/div/div[2]/div/ div[2]/ul/li[1]/button'
 const puppeteer = require('puppeteer') const productUrl = 'https://www.nike.com/it/launch/t/air-max-97-coconut- milk-black' const idAcceptCookies = "button[class='ncss-btn-primary-dark btn-lg']" async function givePage(){ const browser = await puppeteer.launch({headless: false}) const page = await browser.newPage(); return page; } async function addToCart(page){ await page.goto(urlProdotto); await page.waitForSelector(idAcceptCookies); await page.click(idAcceptCookies,elem => elem.click()); //this is where the issues begin //attempt 1 await page.evaluate(() => document.getElementsByClassName('size-grid- dropdown size-grid-button"')[1].click()); //attempt 2 const sizeButton = "button[class='size-grid-dropdown size-grid-button'] button[name='42']"; await page.waitForSelector(sizeButton); await page.click(sizeButton,elem => elem.click()); } //attempt 3 await page.click(xpathButton) //attempt 4 document.evaluate("//button[contains ( ., '36')]", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue async function checkout(){ var page = await givePage(); await addToCart(page) } checkout()
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

El intento número 2 parece el mejor enfoque, excepto que su selector es incorrecto. El button no tiene un atributo de name , según su captura de pantalla, por lo que necesitará otro enfoque, más cercano al intento 3.

Puede usar titiritero para seleccionar un elemento con xpath , y xpath le permite seleccionar por el contenido de texto de un elemento.

Prueba esto:

 const [button] = await page.$x('//button[contains(text(), "EU 36")]') await button.click()

Debido a que el selector xpath devuelve una matriz de identificadores de elementos, desestructura el primer elemento de la matriz (que debería ser la única coincidencia) y le asigna un valor de botón. Ahora se puede hacer clic en el identificador de ese elemento.

about 4 years ago · Juan Pablo Isaza Relatório

0

Recomendaría que use las herramientas de desarrollo de Chrome Recorder para hacer el script, will write the script for you y lo ayudará con los selectores.

luego y expórtalo, mira el video sobre cómo usar

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