Empecé a codificar esta aplicación para hacer scalping en Amazon, solo para probarla, la estoy construyendo con titiritero y necesito agregar un artículo al carrito o simplemente comprarlo, pero no funciona en Amazon, lo probé en el sitio de walmart y es perfecto.
const puppeteer = require('puppeteer'); const product_url = "https://www.amazon.it/Gigabyte-GeForce-RTX-3060-GAMING/dp/B08WB6R2K4/ref=sr_1_3?__mk_it_IT=%C3%85M%C3%85%C5%BD%C3%95%C3%91&dchild=1&keywords=rtx&qid=1628563186&sr=8-3"; async function givePage(){ const browser = await puppeteer.launch({headless: false}); const page = await browser.newPage(); return page; } async function AddToCart(page){ await page.goto(product_url); await page.waitForSelector("button[inputid='add-to-cart-button'") await page.click("button[inputid='add-to-cart-button']", elem => elem.click()); } async function checkout(){ var page = await givePage(); await AddToCart(page); } checkout();resolví el problema creando una matriz con XPath:
await page.$x('//*[@id="submit.buy-now-announce"]');luego le dije al programa que buscara el boton (para mi fue el primero que podrias cambiarlo).
const elements = await page.$x('//*[@id="submit.buy-now-announce"]'); await elements[0].click() ;