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()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.
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