Я создал простой скрипт кукловода, используя расширение безголового рекордера, но он не работает, когда я его запускаю.
TimeoutError: waiting for selector `.a-button-stack > #atc-declarative > #submit.add-to-cart #add-to-cart-button` failed: timeout 30000ms exceeded
Я также пробовал проверять элементы самостоятельно. Итак, если вы перейдете по этому URL-адресу Amazon и проверите кнопку, я попробовал следующее, но время ожидания всегда истекает.
await page.waitForSelector('#add-to-cart-button')
await page.waitForSelector('.a-button-stack')
await page.waitForSelector('.a-button-input a-declarative')
Как я могу найти правильные селекторы, когда включен безголовый? Должен быть способ, иначе как безголовый браузер сможет перемещаться. Я предполагаю, что этот сгенерированный скрипт из расширения headless-recorder
chrome предназначен для случаев, когда для параметра «Безголовый» установлено значение «ложь». Хотя я могу ошибаться. Цель очень проста. Перейдите на страницу продукта Amazon, нажмите «Добавить в корзину», а затем нажмите «Просмотреть корзину». Я ценю любую помощь!
amazon.js
const puppeteer = require('puppeteer');
const randomUseragent = require('random-useragent');
(async () => {
const browser = await puppeteer.launch()
const page = await browser.newPage()
const navigationPromise = page.waitForNavigation()
await page.goto('https://www.amazon.com/Amazon-Essentials-Full-Zip-Hooded-Sweatshirt/dp/B075JW9CYR?ref_=Oct_DLandingS_D_cf757c44_63&smid=ATVPDKIKX0DER&th=1&psc=1')
await page.setViewport({ width: 1920, height: 969 })
await page.waitForSelector('.a-button-stack > #atc-declarative > #submit\.add-to-cart #add-to-cart-button')
await page.click('.a-button-stack > #atc-declarative > #submit\.add-to-cart #add-to-cart-button')
await navigationPromise
await page.waitForSelector('.nav-right > #nav-tools > #nav-cart #nav-cart-count')
await page.click('.nav-right > #nav-tools > #nav-cart #nav-cart-count')
await navigationPromise
await browser.close()
})()
Пытаться:
await page.goto('https://www.amazon.com/Amazon-Essentials-Full-Zip-Hooded-Sweatshirt/dp/B075JW9CYR?ref_=Oct_DLandingS_D_cf757c44_63&smid=ATVPDKIKX0DER&th=1&psc=1')
await page.waitForFunction('document.querySelector("body")');
Попробуйте простой, чтобы увидеть, работает ли он: await page.waitForSelector('.a-button-stack');
Если я только добавлю это, то это сработает. Как я могу углубиться дальше? Если я добавлю это после
await page.waitForSelector('.a-button-stack > #atc-declarative > #submit\.add-to-cart #add-to-cart-button')
, это не удастся. Я также пытался сверлить с телаawait page.waitForFunction('document.querySelector("body > .a-button-stack > #atc-declarative > #submit\.add-to-cart #add-to-cart-button")');
, но это не удалось.