const puppeteer = require('C:/xampp/htdocs/vilmax/vilmax-cockpit/node_modules/puppeteer'); (async () => { const browser = await puppeteer.launch({ headless: 'new' }); const page = await browser.newPage(); await page.setViewport({ width: 1440, height: 960 }); const errors = []; page.on('pageerror', e => errors.push('PAGEERR: ' + e.message)); page.on('response', r => { if (r.status() >= 400) errors.push('HTTP ' + r.status() + ' ' + r.url()); }); await page.goto('https://bazarowy-swiat.pl/produkt/naroznik-oskar-tilia-warianty-l-p/?v=' + Date.now(), { waitUntil: 'networkidle2', timeout: 60000 }); const btn = await page.evaluateHandle(() => [...document.querySelectorAll('button,a')].find(b => /akceptuj/i.test(b.textContent))); if (btn) { try { await btn.asElement().click(); } catch(e){} } await new Promise(r => setTimeout(r, 1000)); await page.evaluate(() => { const s1 = document.querySelector('select[data-attribute_name="attribute_pa_strona"]'); [...s1.parentNode.querySelectorAll('.bs-swatch')].find(b => b.dataset.value === 'lewy').click(); }); await new Promise(r => setTimeout(r, 800)); await page.evaluate(() => { const s2 = document.querySelector('select[data-attribute_name="attribute_pa_kod-odcienia"]'); [...s2.parentNode.querySelectorAll('.bs-swatch')].find(b => b.dataset.value === '39').click(); }); await new Promise(r => setTimeout(r, 1500)); // intercept request po submit let postResp = null; page.on('response', r => { if (r.request().method() === 'POST') postResp = r.url() + ' -> ' + r.status(); }); await page.evaluate(() => document.querySelector('.single_add_to_cart_button').click()); await new Promise(r => setTimeout(r, 5000)); const res = await page.evaluate(() => ({ url: location.href, notice: document.querySelector('.woocommerce-message')?.textContent.trim().slice(0, 200) || null, err: document.querySelector('.woocommerce-error')?.textContent.trim().slice(0, 300) || null, hasForm: !!document.querySelector('form.variations_form'), hasSwatches: document.querySelectorAll('.bs-swatches').length, selects: document.querySelectorAll('select[data-attribute_name]').length, variationWrap: !!document.querySelector('.single_variation_wrap'), vid: document.querySelector('input[name="variation_id"]')?.value, cartContents: document.querySelector('.cart-contents, .bs-cart-count')?.textContent, })); console.log('postResp:', postResp); console.log('res:', JSON.stringify(res, null, 1)); console.log('errors:', errors.slice(0, 10)); await browser.close(); })().catch(e => { console.error('ERR', e.message); process.exit(1); });